在事件函数中检查组件状态是否有效?

Is it valid to check the component state in an event function?

我正在使用 React,并且有一个组件具有 listChanged 函数,在 Store 更改事件之后调用:

getInitialState: function () {
    return {
        isLive: true,
        data: [],
    };
},

componentDidMount: function() {  
    MyStore.addChangeListener(this.listChanged);
},

listChanged: function() {
    if (this.state.isLive) {
        var data = MyStore.getData();
        var newState = {
            data: data
        };

        this.setState(newState);
    }
},

pause: function(e) {
    this.state.isLive = !this.state.isLive;
},

并且我有一个按钮可以通过调用 pause 函数来切换 isLive 状态。这是有效的,因为我有一个绑定到该变量的视觉提示,并且我还使用 Google Chrome 的 React Debug Extension 确认(在我的组件的 React 选项卡中)。

在响应事件的函数中检查该变量是否合法?该函数威胁我的 isLive 状态为真,因为无论变量值如何,我的状态数据总是会刷新。但是我目测确认这个变量设置为false...

TLDR:即使 this.state.isLive 变量设置为 falsethis.setState(newState); 仍会在 listChanged 函数中调用。

是的,完全正确。然而,这不是:

pause: function(e) {
    this.state.isLive = !this.state.isLive;
},

您不能以这种方式设置状态值。你必须使用setState:

pause: function(e) {
    this.setState({ isLive: !this.state.isLive });
},