3 回答

TA貢獻1946條經驗 獲得超3個贊
setState 函數除了設置狀態外,還具有更改時重新渲染的機制。
構造函數在組件實際安裝之前執行,并且不會渲染任何內容。這就是為什么在構造函數中使用 setState 沒有意義。
所以你需要像這樣實現這一點:
constructor(props) {
super(props);
this.state = {
age: '18',
id: 'name'
}
}

TA貢獻1846條經驗 獲得超7個贊
不要使用setState()內部構造函數或內部渲染方法
構造函數- 在創建實例時調用一次,如果您在構造函數內部創建,則不會發生重新渲染。
render - 如果您setState()在 render 方法內部使用,它將變為無限,因為當您使用時會發生重新渲染setState()
如果你想保存這樣的屬性來聲明在生命周期方法中執行它componentDidMount()
改進
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
age: '18'
}
}
componentDidMount(){
this.setState({id: 'name'});
}
render(){
return (
<div>
<p>{this.state.id}</p>
<p>{this.state.value}</p>
</div>
)
}
}
或者像年齡一樣直接輸入
this.state = {
age: '18',
id: 'name'
}

TA貢獻1900條經驗 獲得超5個贊
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
age: '18',
id: '',
}
}
componentDidMount(){
this.setState({id: 'name'});
}
render(){
return (
<div>
<p>{this.state.id}</p>
<p>{this.state.age}</p>
</div>
)
}
}
添加回答
舉報