我正在从孩子那里更新一个州。
getInitialState : function(){
return{
VotedForTopic : false
};
},
updateVotedState:function(){
this.setState({VotedForTopic:true});
console.log(this.state.VotedForTopic)
},
当我执行某些操作将VotedForTopic状态更改为true时,我从子进程调用updateVotedState。但是状态没有得到更新,它仍然是false。 可能是什么问题
答案 0 :(得分:2)
您可以使用通过parent
到child
的回调来更新child
props
州的状态,就像这样
var Parent = React.createClass({
getInitialState: function () {
return {
VotedForTopic: false
};
},
updateVotedState: function () {
this.setState({ VotedForTopic: true });
},
render: function() {
return <div>
<p>{'Current State:: ' + this.state.VotedForTopic} </p>
<Child onUpdateVote={this.updateVotedState} />
</div>;
}
});
var Child = React.createClass({
render: function() {
return <a onClick={this.props.onUpdateVote}>updateVotedState</a>;
}
});
答案 1 :(得分:1)
州是否永远不会更新或您是否依赖console.log
?来自文档:
setState()不会立即改变this.state,但会创建挂起状态转换。在调用此方法后访问this.state可能会返回现有值。
尝试将回调传递给setState
:
updateVotedState:function(){
var that = this;
this.setState({VotedForTopic:true}, function(){
console.log(that.state.VotedForTopic)
});
},