【问题标题】:How to update state of component with some data which is coming from reducer如何使用来自 reducer 的一些数据更新组件的状态
【发布时间】:2023-03-05 15:06:01
【问题描述】:

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

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

这是触发方法的顺序。

1.render() // initial data from redux reducer//
2.componentWillReceiveProps()
3.render() // new data by redux thunk

在第 3 点似乎 componentWillReceiveProps() 也应该触发,但事实并非如此。

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

我该怎么做。请帮忙。

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    你确定componentWillReceiveProps 真的被触发了吗?它仅在 props 实际更改时触发,而不是在组件最初安装且 props 未更改时触发。您可能不想将 state 初始化为空状态,而是已经基于 props 的东西。

    【讨论】:

    • 是的。 props 正在由 redux thunk 更新。因此,reducer 将首先将初始状态发送到 filter.js,当新数据到来时,redux thunk 会立即调用服务,reducer 将再次将数据发送到 filter.js。这是我要更新 filter.js 状态的地方。但是 componentWillReceiveProps 只触发一次。我添加了一些有问题的行。请访问。
    • 我明白了,你还在使用旧版本的 React 吗?实际上componentWillReceiveProps 已被弃用,取而代之的是reactjs.org/docs/…,这可能正是您所需要的
    • 感谢@Tommos 的提示。这个链接讲述了 reactjs 的全部故事和未来规划。 reactjs.org/blog/2018/03/27/update-on-async-rendering.html Title:Update on Async Rendering-March 27, 2018 by Brian Vaughn
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 2021-07-20
    • 2021-06-30
    相关资源
    最近更新 更多