[英]React redux - pushed object in the state is not mapped but initialState is
[英]Why is redux state not mapped to react state?
我对React-Redux非常新,遇到了一个名为mapstatetoprops的方法。
但是为什么redux状态没有映射到反应状态? 为什么它映射到道具呢?
在React中,state属于组件,而props从它的父级传递给组件。 mapStateToProps()
是一个在connect()
内部使用的函数,用于connect()
数据从Redux存储传递到组件。
状态和道具之间的区别: https : //codeburst.io/react-state-vs-props-explained-51beebd73b21
如果要在组件的状态下使用Redux存储中的数据,组件首先需要将其作为prop来接收。 然后,您可以将其映射到getDerivedStateFromProps
的组件状态。 https://reactjs.org/docs/react-component.html#static-getderivedstatefromprops
当您以这种方式从props派生状态时,更新组件的状态不会更改Redux状态。
主要原因(我认为):
“哑”组件仅处理属性,而不处理状态。
“愚蠢”组件的一个动机是它们很容易测试:你需要做的就是传递道具。 这意味着无论道具来自哪里,你唯一能测试的就是他们用任何道具做出正确的事情。
将redux存储映射到属性强化了这一概念。 一旦你引入组件状态,你就必须玩更多(一些简单的)游戏来测试组件,但它并不像纯组件那样直截了当。
因为这是Redux工作流程。
如果没有redux,则使用本地状态(组件状态)并将数据通过父级传递给子级,这使得当您有更多组件时数据共享非常困难。
ComponentOne有要传递给组件4的数据:
ComponentOne -> ComponentTwo -> ComponentThree -> ComponentFour
使用Redux,你有一个商店,但不能用作对象(getter和setter),你将它的内容映射到需要每个属性的组件。
Redux场景:
store {userName: "user", otherData...}
仪表板
function mapStateToProps(state) {
return {
userName : state.userName
}
这样,组件将侦听userName
更改,但只能通过mapDispatchToProps更改存储中的数据。 这样,确保了单一真实反应原则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.