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更新成功不触发渲染,不常见的解决方法

React setState 更新不正确的子组件

React 6/100 React原理 | setState | JSX语法转换 | 组件更新机制

React JS:setState中的previousState在状态更新后不保留先前状态的数据