Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用来自reducer的数据更新组件的状态_Javascript_Reactjs - Fatal编程技术网

Javascript 如何使用来自reducer的数据更新组件的状态

Javascript 如何使用来自reducer的数据更新组件的状态,javascript,reactjs,Javascript,Reactjs,假设我有一个子类别container.js,它正在将道具传递给subcategory.js,现在在subcategory.js中导入了另一个组件filter.js。此filter.js正在从subcategory.js接收道具。数据来自存储。这里redux thunk正在异步更新存储 现在的问题是将道具置于filter.js的状态。初始状态设置为空对象。即使我在componentWillReceiveProps方法中更新了状态,我也只在render()中得到空对象,而不是更新的状态,更新后的状态

假设我有一个子类别container.js,它正在将道具传递给subcategory.js,现在在subcategory.js中导入了另一个组件filter.js。此filter.js正在从subcategory.js接收道具。数据来自存储。这里redux thunk正在异步更新存储

现在的问题是将道具置于filter.js的状态。初始状态设置为空对象。即使我在componentWillReceiveProps方法中更新了状态,我也只在render()中得到空对象,而不是更新的状态,更新后的状态中应该有props的数据

这是激发方法的顺序

1.render() // initial data from redux reducer//
2.componentWillReceiveProps()
3.render() // new data by redux thunk
在第3点,似乎componentWillReceiveProps()也应该触发,但事实并非如此

如何使用新收到的道具更新filter.js状态(道具->由thunk更新)


我该怎么做呢。请协助。

您确定
组件将接收到的道具实际上已触发吗?它仅在道具实际发生变化时触发,而不是在组件最初安装且道具未发生变化时触发。您可能不想将状态初始化为空状态,而是要初始化为基于道具的状态。

是的。道具由redux thunk更新。因此,reducer将首先向filter.js发送初始状态,当新数据出现时,redux thunk立即调用服务。reducer将再次向filter.js发送数据。这就是我想要更新filter.js状态的地方。但是componentWillReceiveProps只触发一次。我添加了一些有问题的行。请访问。我明白了,你是否被旧版本的React卡住了?实际上,
componentWillReceiveProps
已经被弃用了,这可能正是您所需要的。谢谢@Tommos的提示。这个链接讲述了reactjs的整个故事和未来规划。标题:Brian Vaughn于2018年3月27日发布的异步渲染更新