我正在尝试学习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}))' –