sub*_*rat 5 reactjs react-native redux react-redux
根据 redux 的文档,reducer 总是给出一个新的状态副本。mapStateToProps在连接的组件中,react-redux 对(旧的与新的 props)中提到的属性进行浅层比较。
我的困惑是,由于 redux 总是提供新的状态副本,react-redux 所做的浅层比较应该总是给出 false,并且组件应该总是重新渲染。但这并没有发生。
有人可以解释我缺少什么吗?
我正在考虑在 mapStateToProp 中读取的所有属性都是对象。
我们都同意,mapStateToProps如果存储状态相同,则不会运行。redux 文档是这样的:
connect 生成的包装器组件订阅 Redux 存储。每次分派一个操作时,它都会调用
store.getState()并检查是否lastState === currentState. 如果两个状态值通过引用相同,则它将不会重新运行您的mapStateToProps函数,因为它假设存储状态的其余部分也没有更改。
为什么 我的组件没有重新渲染,或者我的 mapStateToProps 没有运行?可以描述您的情况,因为您可能会意外地直接改变您的状态。
由于您使用的是“combineReducers”(虽然这很棒),但还有一个“问题”:
combineReducers实用函数尝试优化状态更新。如果没有切片减速器返回新值,则combineReducers返回旧状态对象而不是新状态对象。这意味着减速器中的突变可能会导致根状态对象未更新,因此 UI 不会重新渲染。
| 归档时间: |
|
| 查看次数: |
2180 次 |
| 最近记录: |