我读过这个帖子 . What is the difference between state and props in React?
它说道具不同于状态,理想情况下道具不应该在其组件中发生变化,只应由其父组件进行更改 .
但是,在Redux中的reflect-redux map map中的mapStateToProps函数是React组件的道具,当Redux状态被Redux动作改变时,它基本上改变了React组件的道具 .
这对我没有意义 . 它似乎应该是mapStateToStates而是将Redux状态映射到React组件的状态 .
我错过了什么吗?
3 回答
这里的State指的是组件的内部状态,组件可以通过
.setState()
在内部进行更改 .这里的状态指的是redux商店,一个外部状态 . react-redux的connect方法创建一个HOC - 高阶组件(一个知道商店状态变化的组件) . HOC包裹了哑的反应组件,它不知道商店 . 使用
mapStateToProps
,HOC映射来自外部状态的数据,并通过props将其注入react组件 .State in redux store -> mapStateToProps in HOC -> props passed to the dumb component
因此,HOC是父母,而愚蠢的组成部分是孩子 . 父对子组件注入新的道具,并且不违反第一个断言“道具不应该在其组件中进行更改,只应由其父组件更改” .
Notes:
有关更高阶组件的更多信息,请参阅Dan Abramov关于Presentational and Container Components的文章 .
要了解react-redux连接的工作原理 - 在线免费课程Getting Started with Redux,Dan Abramov展示了如何从头开始 Build 连接(第22-29课)
state
此处mapStateToProps
表示ReduxStore
在ReduxStore
中 .它将
Redux
state
映射到ReactComponent
props
. 它不一定是将道具映射到州,例如Pure ComponentmapStateToProps使用react-redux connect()函数将状态作为props传递给组件 . 将connect()函数视为包装器组件,它将props传递给子组件 .