2017-06-03 109 views
1

我正在使用react和basic flux来执行数据录入Web应用程序。 因此,我有一个与商店通信的根组件,获取类似this的复杂数据对象。React - setState()不更新叶级别属性

关于选项选择元素的更改,我触发了一个动作,该动作会带来与上面类似结构的另一个相关对象。

我管理这个庞大的对象作为我的数据录入页面的根状态,并将数据作为道具传递给各个组件。

该对象的叶级,我已经绑定到一个Input元素。所以当对象改变时它会改变。所有这些变化都从根组件的下列状态变化中淡化。

MeasurementStore.getAllMeasurements().then((measurements) => { 
     this.setState({ 
      measurements : measurements 
     }); 
    }); 

但在我的情况下,叶级别的值不会对应状态变化。但是当我添加以下内容时

MeasurementStore.getAllMeasurements().then((measurements) => { 
     this.setState({ 
      measurements : {} 
     }); 
     this.setState({ 
      measurements : measurements 
     }); 
    }); 

它开始正常工作,并且叶级值相应地改变。为什么会发生?

+0

你有没有初始化你的“测量”为空对象或只是空字符串? –

+0

作为一个空对象! – jdc91

+0

试试这个this.setState({测量:{... measurements} }); – Panther

回答

1

想通了。 我一直在维护一个可重用的“自定义”输入的状态,因为子元素是基于自己的状态,所以变化没有像预期的那样流下来。

删除状态及其“道具”一路到最后!

经验教训!总是试图提升你的状态!