gpt4 book ai didi

javascript - 检查 componentWillReceiveProps 中的对象引用是否安全?

转载 作者:行者123 更新时间:2023-12-02 14:13:24 25 4
gpt4 key购买 nike

我有一个连接到 redux 存储的组件,并且有一个如下所示的代码块:

if (this.props.person !== nextProps.person) {
...
} else {
...
}

...

MyComponent.propTypes {
person: PropTypes.object.isRequired
}

以这种方式检查对象引用是否安全?我可以假设在 reducer 中对象引用总是会改变吗?

最佳答案

只要你的 reducer 是一个函数,它就是安全的。为了保证纯度,这些是您绝对不应该在 reducer 中执行的 3 件最重要的事情:

  • 改变其参数(使用 Object.assignobject spread operator 以避免对象发生突变)
  • 执行 API 调用和路由转换等副作用
  • 调用非纯函数,例如Date.now() 或 Math.random()。

如果您的 reducer 满足所有 3 个条件,则调度的任何特定操作都会修改状态树内的 person 属性,将产生一个新的 person 对象

在这种情况下,this.props.personnextProps.person 将是两个不同的对象,并且该对象引用检查将是正确的。但是,如果分派(dispatch)的特定操作未修改状态树内的 person 属性,则 this.props.personnextProps.person 仍将是同一个对象

关于javascript - 检查 componentWillReceiveProps 中的对象引用是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39265933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com