我一直在學習ReactJS。在其文檔中,建議使用setState方法對組件進行任何更改,但也要在文檔中進行更改,不建議依賴「道具」,因爲「狀態」和「道具」異步工作。這是將數據傳遞給有狀態組件的正確方法嗎?
Because this.props and this.state may be updated asynchronously, you should not rely on their values for calculating the next state.
下面的例子是從文檔,但反一直沒有執行到這個例子,我自己做到了。 我想知道下面的方法是將數據傳遞給有狀態組件並在創建後更改其數據的正確方法。
class Clock extends React.Component{
constructor(props){
super(props);
this.state = {date:new Date(),counter:parseInt(this.props.counter)};
}
componentDidMount(){
this.timerId = setInterval(() => this.tick(),
1000);
}
componentDidUnmount(){
clearInterval(this.timerId);
}
tick(){
this.setState((prevState,props)=>({
date:new Date(),
counter:prevState.counter+1
}));
}
render(){
return (
<div>
<h1>Hello World</h1>
<h2>It is {this.state.date.toLocaleTimeString()} - {this.state.counter}</h2>
</div>
);
}
}
ReactDOM.render(<div><Clock counter="0" /><Clock counter="10" /></div>,document.getElementById('root'));
名爲「計數器」的屬性傳遞給組件,然後將其添加到在構造,之後的「狀態」,國家採取責任改變其數據。
我不明白那不是負責數據的「道具」嗎?我的方法是否真實和推薦?