【问题标题】:Is there way to get return value from reducer action? (in React-Native)有没有办法从减速器动作中获得返回值? (在 React-Native 中)
【发布时间】:2018-06-17 12:03:01
【问题描述】:

我正在使用 React-Native 制作应用程序。

我有一个处于 redux 状态的数据数组。 我会说这是用户的数组。

我想选择一个用户并直接从 reducer 状态获取他的数据。

但我无法从减速器操作中获得返回值。 访问商店并使用 getState() 似乎不是一个好方法。首先,访问位于根组件中的“存储”实例太难了。

我有什么选择?

  • 注意:我已经知道我可以添加另一个状态,如“pickedUser”并通过操作设置它。但我想知道是否有另一种直接获取状态的方法。

我正在寻找诸如调用动作并获取返回值之类的东西。

【问题讨论】:

    标签: reactjs react-native redux


    【解决方案1】:

    我想选择一个用户并直接从 reducer 状态获取他的数据。

    没有什么能比得上 reducer 状态。 reducer 是一个纯函数,它接受前一个状态和一个动作,然后返回下一个状态。

    它永远不应该由你自己调用,而是由 redux 来更新状态。您可以通过连接来监听状态变化,例如使用 react-redux 包中的 connect() 函数将您的组件反应到商店。如果您的组件正在侦听的状态的一部分更新,它将通过将更新的状态作为道具传递来触发该连接组件的重新渲染。这是对状态变化做出反应的方式。

    我正在寻找诸如调用动作并获取返回值之类的东西。

    Redux 操作不返回任何内容。它们只是触发全局状态的更改,然后您可以收听这些更改。如果您需要,例如在您需要某种异步操作的操作中获取数据(以更新状态),例如redux-thunk 提供。

    【讨论】:

    • 感谢您的友好回答。它对我理解它的工作原理有很大帮助。
    • 我通过使用 redux 的 store.getState() 解决了我想要的问题。为此,我将“存储”对象分配给静态类的静态变量。并访问它。我对使用这种方法持怀疑态度,但它确实有效。
    • 对了,你跟我说的绝对是正确的答案。但是你觉得我直接访问redux的store就没有问题了吗?
    • 一般情况下可以这样。但是结合 react 来充分利用 react-redux 绑定通常是一个更好的主意。将所有组件包装成一个<Provider> 组件,该组件作为道具传递到商店。然后,您可以使用 connect() 函数将需要来自存储的数据的树下的每个组件连接起来。有关详细示例,请参阅 redux 文档中的 Usage with react。
    【解决方案2】:

    新版本你可以在 redux 中使用 useSelector() 和 useDispatch()...你仍然需要使用 Redux-thunk 进行所有异步调用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      • 2018-08-16
      相关资源
      最近更新 更多