Redux-connect( )介绍

React-dedux提供connect()方法,用于从UI组件生成容器组件,connect的意思就是把这两种组件连起来

import { connect } from 'react-redux'
const VisibleTodoList = connect()(TodoList);

上面代码中,TodoList是UI组件,VisibleTodoList就是由React-redux通过connect方法自动生成的容器组件

但是,因为没有定义业务逻辑,上面这个容器组件毫无意义,只是 UI 组件的一个单纯的包装层。为了定义业务逻辑,需要给出下面两方面的信息。

(1)输入逻辑:外部的数据(即state对象)如何转换为 UI 组件的参数
(2)输出逻辑:用户发出的动作如何变为 Action 对象,从 UI 组件传出去。

connect方法的完整 API

import { connect } from 'react-redux'

const VisibleTodoList = connect(
  mapStateToProps,
  mapDispatchToProps
)(TodoList)

connect 接收两个参数,mapStateToPropsmapDispatchToProps,他们定义了UI组件的业务逻辑,前者负责输入逻辑,即state映射到UI组件的参数(props),后者负责输出逻辑,即将用户对 UI组件的操作映射成Action

我理解的mapStateToProps相当于是在store中读取数据,与reducer没有关系,哪的是已有的数据,而不是执行reducer获取的,可以打印下state看看,是一个对象,键名是reducer规则的名字,键值就是这个规则所对应的数据,如果说我们要获取store中对应的数据的话,就需要state.xxx(xxx表示我们定义的reducer规则)

mapDispatchToProps就是把action存到了一个名为userInfoActions的对象中了。如果说需要修改redux数据则需要通过action来完成,this.props.userInfoActions.xxxx(传参) (xxx表示action) (个人理解,如有错误,欢迎指正。)


    function mapStateToProps(state){
         console.log(state)
        return {
            userinfo : state.userinfo
        }
    }

    function mapDispatchToProps(dispatch){
        return {
            userInfoActions : bindActionCreators(userInfoActionsFromOtherFile,dispatch)
        }
    }   

mapStateToProps(state),state就是store的全部状态,如果要获取某一个reduce的值就可以用state.xxx

eg:

const rootReducer = combineReducers({
    userinfo
})

//这是两个不同js文件的 演示方便 我写一起了。。。
function mapStateToProps(state) {
    return {
        //state就是store的全部状态,state.userinfo代表我只要userinfo(userinfo是一个reducer)返回的数据
        userinfo: state.userinfo
        //返回的userinfo就被做成了props 这样子就可以传递给木偶组件
    }
}

这两个函数的核心价值在于,它能把 redux 中的数据和操作函数,作为 props 赋值到 react 组件中,这样就可以直接在 react 组件中进行操作——这样才是将 redux 和react 结合起来了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值