Redux与React-Native和mapStateToProps

gpm*_*suk 8 javascript reactjs react-native redux react-redux

我读过这个帖子.React中的状态和道具有什么区别?

它说道具不同于状态,理想情况下道具不应该在其组件中发生变化,只应由其父组件进行更改.

但是,在Redux中的reflect-redux map map中的mapStateToProps函数是React组件的道具,当Redux状态被Redux操作改变时,它基本上改变了React组件的道具.

这对我来说没有意义.它似乎应该是mapStateToStates而是将Redux状态映射到React组件的状态.

我错过了什么吗?

Ori*_*ori 10

它说道具不同于状态,理想情况下道具不应该在其组件中发生变化,只应由其父组件进行更改.

这里的状态是指组件的内部状态,组件可以通过内部状态进行更改.setState().

但是,在Redux中的reflect-redux map map中的mapStateToProps函数是React组件的道具,当Redux状态被Redux操作改变时,它基本上改变了React组件的道具.

这里的状态指的是redux商店,一个外部状态.react-redux的connect方法创建一个HOC - 高阶组件(一个知道商店状态变化的组件).HOC包裹了哑反应组件,它不知道商店.使用mapStateToPropsHOC映射来自外部状态的数据,并通过props将其注入react组件.

在redux store中的状态 - > HOC中的mapStateToProps - >传递给dumb组件的props

所以HOC是父母,而愚蠢的组成部分是孩子.父对子组件注入新的道具,并且不违反第一个断言"道具不应该在其组件中进行更改,只应由其父组件更改".


笔记:

  1. 有关更高阶组件的更多信息可以在Dan Abramov关于演示和容器组件的文章中找到.

  2. 要了解react-redux连接的工作原理 - 在线免费课程" Redux入门"中,Dan Abramov展示了如何从头开始构建连接(第22-29课)