【发布时间】:2018-12-17 12:06:06
【问题描述】:
如果道具发生了变化,我想更新我的本地状态。但我找不到适合这个问题的解决方案。 getDerivedStateFromProps 只给我 nextProps 和 prevState 但我需要 prevProps 和 nextProps。请写出任何可能解决此问题的解决方案)
情况: Cart 组件(有状态)从 props 获取获取的数据并将该数据放入 this.state.cart。 Cart 组件具有counterHandler 方法,该方法在计数器更改时触发(onIcrease、onDecrease、onChange)。此处理程序计算数据并根据事件生成新数据(计算 totalPrice 并更新项目数量)。然后将新数据放入setState 以更新 UI。状态不会因为我这样做而改变:
static getDerivedStateFromProps(nextProps, prevState) {
if (!_.isEqual(nextProps.cart, prevState.cart)) {
return { cart: nextProps.cart };
} else return null;
}
我这样做是因为我想在真实数据发生变化时更新状态(来自道具的数据)。
目标:在不产生任何副作用的情况下更新计数器和总价的值(这些值可能在商店中更新或仅针对本地状态更新)。
这就是我的意思:
【问题讨论】:
-
你可以镜像状态对象中的道具,然后可以在 getDerivedStateFromProps 中比较新旧道具对象
-
是的,这是个好主意。我会用这个。谢谢好心人)
-
祝你好运。
标签: javascript reactjs redux