我正在嘗試學習ReactJS和Redux,並遇到了一個我似乎無法克服的問題。依賴異步請求和狀態變化的React渲染方法
我有一個React組件,它從異步請求中獲取數據。
export class MyPage extends React.Component {
constructor(props) {
super(props)
this.state = {
enableFeature: false,
}
this.handleEnableFeatureChange = this.handleEnableFeatureChange.bind(this)
}
componentWillMount() {
this.fetchData()
}
fetchData() {
let token = this.props.token
this.props.actions.fetchData(token)
}
handleEnableFeatureChange (event) {
this.setState({ enableFeature: event.target.checked })
}
render() {
if (this.props.isFetching) {
return (
<div>Loading...</div>
)
} else {
return (
<div>
<label>Enable Feature
<input type="checkbox"
className="form-control"
checked={this.props.enableFeature}
onChange={this.handleEnableFeatureChange}
/>
</label>
</div>
)
}
}
}
所以,我現在的問題是,當我改變複選框的狀態,我想更新我的數據的狀態。但是,每次更新我的數據狀態時,反應組件方法shouldComponentUpdate
都會啓動,並使用當前的道具來渲染原始數據。
我想看看這種情況是如何處理的。
謝謝。
如果您使用的終極版..閱讀此http://redux.js。 org/docs/advanced/AsyncActions.html ...如果您想使用React組件事件,請嘗試返回false直到達到您所需的狀態https://facebook.github.io/react/docs/react-component.html#應該更新 –
將此this.setState({enableFeature:event.target.checked})'改爲'this.setState((prevState)=>({enableFeature:!prevState.enableFeature}))' –