React - setState() 不更新叶级属性
Posted
技术标签:
【中文标题】React - setState() 不更新叶级属性【英文标题】:React - setState() Does not update leaf level attributes 【发布时间】:2017-11-04 19:59:56 【问题描述】:我正在使用 react 和 basicflux 来做一个数据输入网络应用程序。 所以我有一个与商店通信的根组件,获取类似于this 的复杂数据对象。
在更改选项选择元素时,我会触发一个动作,该动作将带来另一个具有与上述类似结构的相关对象。
我将这个庞大的对象作为我的数据输入页面的根状态进行管理,并将数据作为道具传递给各个组件。
这个对象的叶级,我已经绑定到一个 Input 元素。因此,它会随着对象的变化而变化。所有这些变化都源自根组件的以下状态变化。
MeasurementStore.getAllMeasurements().then((measurements) =>
this.setState(
measurements : measurements
);
);
但在我的情况下,叶级别的值不会随着状态的变化而变化。但是当我添加以下内容时
MeasurementStore.getAllMeasurements().then((measurements) =>
this.setState(
measurements :
);
this.setState(
measurements : measurements
);
);
它开始正常工作并且叶级值相应地改变。为什么会这样?
【问题讨论】:
您将measurements
初始化为空对象还是空字符串?
作为一个空对象!
试试这个 this.setState(measurements : ...measurements );
【参考方案1】:
想通了。 我在我编写的可重复使用的“自定义”输入中维护状态,因此由于子元素基于自己的状态,因此更改不会像预期的那样逐渐下降。
将状态及其“道具”一直移除到最后!
经验教训!总是努力提升你的状态!
【讨论】:
以上是关于React - setState() 不更新叶级属性的主要内容,如果未能解决你的问题,请参考以下文章
ES6/React:为啥我的三重嵌套 setState 更新不起作用?
[React] setState更新成功不触发渲染,不常见的解决方法
[React] setState更新成功不触发渲染,不常见的解决方法