ReactJS State没有得到更新

时间:2015-10-23 07:01:29

标签: javascript reactjs

我正在从孩子那里更新一个州。

getInitialState : function(){
        return{
            VotedForTopic : false

        };
    },

updateVotedState:function(){
        this.setState({VotedForTopic:true});
        console.log(this.state.VotedForTopic)
    },

当我执行某些操作将VotedForTopic状态更改为true时,我从子进程调用updateVotedState。但是状态没有得到更新,它仍然是false。 可能是什么问题

2 个答案:

答案 0 :(得分:2)

您可以使用通过parentchild的回调来更新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>;
    }
});

Example

答案 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)
    });
},