检查事件函数中的组件状态是否有效
Is it valid to check the component state in an event function?
我正在使用react,并有一个具有listChanged
函数的组件,在存储更改事件后调用:
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
状态。这是工作,因为我有一个视觉提示绑定到该变量,我也确认了谷歌浏览器的React调试扩展(在我的组件的React选项卡)。
在响应事件的函数中检查变量是否合法?该函数威胁我的isLive状态为true,因为无论变量值如何,我的状态数据总是刷新。但是我从视觉上确认了这个变量被设置为false…
TLDR:即使this.state.isLive
变量设置为false
, listChanged
函数仍然调用this.setState(newState);
是的,它完全有效。然而,这不是:
pause: function(e) {
this.state.isLive = !this.state.isLive;
},
不能以这种方式设置状态值。必须使用setState
:
pause: function(e) {
this.setState({ isLive: !this.state.isLive });
},
相关文章:
- 检查元素是否将状态从隐藏更改为可见
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- Angular+bootstrap ui,检查当前选项卡是否已处于活动状态
- reactjs-redux,是否可以有一个由2个组件使用的状态
- 是否可以在reactjs中设置多个状态变量
- 检查网络驱动程序是否浏览器仍处于打开状态
- 检查 redux 状态是否更改的简单方法
- Reactjs:在修改对象之前,是否需要复制处于组件状态的对象
- 是否可以在没有视图状态和回发的情况下使用asp.net web表单
- 使用jquery检查internet是否处于活动状态
- 查看CSS:invalid选择器当前是否在JavaScript中处于活动状态
- 如何检查Promise是否处于挂起状态
- 如何查找页面状态是否在 AJAX 或 Java 脚本 ASP.NET 更改
- 通过道具操纵状态是否正确
- UI状态是否应存储在模型或控制器中
- 窗口状态是否在导航后持续存在
- 检查事件函数中的组件状态是否有效
- 发送请求将令牌重置为以前的状态是否不安全?
- 通过props来初始化子组件的状态是否正确?
- 在离开窗口前询问if状态是否为真