首页 文章

Redux与React-Native和mapStateToProps

提问于
浏览
5

我读过这个帖子 . What is the difference between state and props in React?

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

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

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

我错过了什么吗?

3 回答

  • 0

    它表示道具与州不同,理想情况下道具不应该在其组件中发生变化,只应由其父组件进行更改 .

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

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

    这里的状态指的是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:

  • 8
    • state 此处 mapStateToProps 表示 ReduxStoreReduxStore 中 .

    • 它将 Redux state 映射到 ReactComponent props . 它不一定是将道具映射到州,例如Pure Component

  • 0

    mapStateToProps使用react-redux connect()函数将状态作为props传递给组件 . 将connect()函数视为包装器组件,它将props传递给子组件 .

    mapStateToProps
    connect (state) ----------------------->  component(props)
    

相关问题