【问题标题】:how to check is the data finished update then do other thing (REACTJS + REDUX)如何检查数据是否完成更新然后做其他事情(REACTJS + REDUX)
【发布时间】:2018-06-03 17:50:07
【问题描述】:

现在我通过使用“componentWillRecieveProps”来检查 Redux 状态的“nextProps”是否完成。

就像这个例子,

if (!nextProps.a.update && !nextProps.a.error &&
  nextProps.a.update !== this.props.a.update) {
  const oldData = [...this.props.a.data];
  const newData = [...nextProps.a.data];
        .
        .
        .
  });
}
}

有没有人有其他好主意来检查它?

谢谢。

【问题讨论】:

    标签: reactjs redux react-redux redux-saga side-effects


    【解决方案1】:

    如果您正在使用任何中间件,例如 Redux-saga 或 thunk,您可以从中间件本身检查更新是否完成,一旦更新,您可以从中间件本身发送操作并获得通知。 不确定多少适合您的情况。

    【讨论】:

    • 我不能在 saga 上使用。你知道吗?
    【解决方案2】:

    这真的取决于。 1. 如果您尝试实现的逻辑仅针对同一个组件,并且一次仅从一个调度的动作开始,那么使用标志绝对可以,将“将更新”设置为 true,将“更新”设置为 false (必要时与安装相同)。 2. 如果逻辑是基于少量动作,那么使用promise创建一个bulking机制可能会更好。再次,取决于你的逻辑。也许为每种类型的更新使用标志就足够了。 3. 如果逻辑是系统范围的,我会使用全局变量,甚至可以设置在“窗口”上。例如,我想实现一个名为“isLoading”的变量,它将定义是否有任何未决的 ajax 调用。

    如果这就是您一直在寻找的,请告诉我。

    【讨论】:

    • 标志是什么?并且“将更新”无法设置状态(无法设置标志)。
    • 一个标志 - 只是你组件上的一个布尔指示器。 1. will update 可以设置状态,只是不是使用 setState 而是更新你得到的参数 nextState 。 2. 你不需要在你的州保留这面旗帜。您可以在组件本身上使用它。数据更新本身会导致更新周期,因此该标志会一直被触发。
    猜你喜欢
    • 2015-11-01
    • 2011-05-24
    • 1970-01-01
    • 2020-01-15
    • 2012-12-30
    • 2015-08-15
    • 2021-07-15
    • 2011-10-09
    • 2018-12-06
    相关资源
    最近更新 更多