【问题标题】:How to rerun-useEffect() after dispatching an redux action in react native?在 react native 中调度 redux 操作后如何重新运行-useEffect()?
【发布时间】:2021-12-02 06:44:06
【问题描述】:

我正在使用 redux 处理原生应用程序,reducer 看起来像这样,

    reducer = {
      dataA: {},
      dataB: {},
      laoding: false,
      error: false
    }

我创建了一个 redux 操作,它将更新 reducer 中的 dataA 对象。我打电话给行动 来自我在 useEffect() 中的一个 react-native 组件。

useEffect(() => {
 dispatch(dataA())
}, [])

我没有传递任何依赖数组。

一切都很好,但是来自我明确调度的同一个组件 更新 dataB 对象的操作,这将导致从后端本身更新 dataA。

我希望,每当我明确调度一个动作来更新 dataB 时,useEffect
应该重新运行以从 dataA 对象中获取最新更新的对象值。

但这并没有发生,即使我尝试将 dataA 对象作为依赖项传递给 useEffect,它也会 useEffect 的无限循环。

而且,dataB 对象包含布尔值,当我调度操作以更新 dataB 时,我想显示警报框。

  dataB = {
   result: {
     success: true || false,
     Message: "Something"
    }
  }

提前致谢

【问题讨论】:

    标签: javascript reactjs react-native redux


    【解决方案1】:

    我希望这对你有帮助。你可以试试这个:

     useEffect(() => {
        dispatch(dataA())
    }, [dataB])

    【讨论】:

      【解决方案2】:

      它进入无限循环,因为您更新 dataA 并提供依赖关系 dataA 一次又一次调用此 useEffect。您可以将dataB 作为依赖项,这意味着每当dataB 更改时调用此useEffect

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-12
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 2017-11-30
        • 2018-02-16
        • 1970-01-01
        • 2016-12-03
        相关资源
        最近更新 更多