在事件函数中检查组件状态是否有效?
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
变量设置为 false
,this.setState(newState);
仍会在 listChanged
函数中调用。
是的,完全正确。然而,这不是:
pause: function(e) {
this.state.isLive = !this.state.isLive;
},
您不能以这种方式设置状态值。你必须使用setState
:
pause: function(e) {
this.setState({ isLive: !this.state.isLive });
},
我正在使用 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
变量设置为 false
,this.setState(newState);
仍会在 listChanged
函数中调用。
是的,完全正确。然而,这不是:
pause: function(e) {
this.state.isLive = !this.state.isLive;
},
您不能以这种方式设置状态值。你必须使用setState
:
pause: function(e) {
this.setState({ isLive: !this.state.isLive });
},