在带有对象的 reactJs 中使用 setState 始终保持为空

Using setState in reactJs with an object always remains empty

我的这段代码似乎不起作用,它快把我逼疯了!有人可以指出我做错了什么吗?

getInitialState: function () {
    return {
        modalUser: {},
        users: []
    };
},
updateModalUser: function (user) {
    console.log(user);
    module.React.addons.update(this.state, {
        modalUser: { $set: user }
    });
    console.log(this.state);
},

最初我确实尝试过在没有插件的情况下这样做,但我得到了相同的结果。即我的 updateModalUser 看起来像:

updateModalUser: function (user) {
    console.log(user);
    this.setState({
        modalUser: user
    });
    console.log(this.state);
},

我得到的输出是:

Object {id: 28, fname:"fred", lname:"flinstone"…}

Object {modalUser: {}, users: []}

您应该使用 this.setState({modalUser: newObjectHere}),这是更改组件状态的正确方法。

this.setState() 是异步的,你需要在它的回调中记录状态:

updateModalUser: function (user) {
    console.log(user);
    this.setState({
        modalUser: user
    }, function() {
        console.log(this.state);
    })
}

更多信息在这里:https://facebook.github.io/react/docs/component-api.html#setstate