【发布时间】:2019-01-18 14:25:52
【问题描述】:
在componentDidUpdate 中导出数据的最佳做法是什么,将其推送到 redux 存储中,然后使用该数据进一步导出更多数据,然后再次将其推送到 redux 存储中?
鉴于 redux 是同步的,我希望能够在我完成调度后立即访问更新的 store,但我假设因为它仍在 componentDidUpdate 中,所以不会使用新的 store 数据更新 props通过mapStateToProps。即我试过 -
componentDidUpdate(){
this.determineAndStoreA()
this.doSomethingElse(this.props.A) // hoping this would be the updated A
}
this.props.A 仍然是旧值
我应该更像 -
componentDidUpdate(){
const a = this.determineA()
this.storeA(a);
this.doSomethingElse(a) // using a local copy of A
}
经过进一步挖掘,我在https://github.com/reduxjs/react-redux/issues/291 中发现了一个类似的问题。 Dan 建议对 reducer 中的操作做出反应,但感觉我现在必须结合确定 A、从 A 确定 B、同时存储 A 和 B 的逻辑?
【问题讨论】:
-
在
determineA中了解更多关于您在做什么会很有帮助。整个设置看起来像是一种代码味道。似乎导致此更新的操作仅由您的减速器部分处理,现在您的组件正在执行另一个工作步骤并分派给您的减速器。我会研究你是否可以让你的 reducer 一步完成,而不是将部分工作委托给组件。 -
这是一个公平的评论,我在我的问题中添加了更多内容。我想你可能是对的,我会再通过一次,看看逻辑是否可以在一个 redux 操作/reducer 中组合和处理