1、Redux与组件javascript
react-redux是一个第三方插件使咱们在react上更方便的来使用redux这个数据架构java
React-Redux提供connect方法,用于从UI组件生成容器组件,connect的意思就是将两种组件连起来react
2、react-redux的基本用法redux
(1)、引入架构
import {Provider} from "react-redux";ide
在根组件外层嵌套一个Provider. 函数
Provider的做用就是将store传递给每个子组件,每个子组件就均可以使用store了,不须要重复的在组件中引入storethis
它能够将store传递给包裹的全部的子元素 provider组件有一个属性 store 用来接受storespa
(2)、connect进行链接插件
(1)、在子组件中引入connect
import { connect } from "react-redux";
(2)进行链接
export default connect(mapStateToProps)(组件名称)
connect()():
第一个括号里面有三个参数
第一个参数:mapStateToProps
解释:
mapStateToProps其实就是一个规则,把store里面的state映射到当前组件的 props中
第二个参数:mapDispatchToProps
解释:
(1)、mapDispatcherToProps 这个方法用来修改数据,这个方法中有一个参数为dispatch.
(2)、若是说mapStateToProps是将store的数据拿到当前组件使用,那么mapDispatcherToProps就是提升了一些方法让你若是进行数据的修改(方法须要本身去写,依旧要把action返回给Store),这个方法被映射的this.props中。dispatch是用来发送action的
第二个括号:须要传递组件名称
一、list.js
import React, { Component } from 'react' import { connect } from "react-redux"; class List extends Component { render() { let { list } = this.props return ( <div> <ul> { list.map((item, index) => ( <li key={index}>{item} <button onClick={this.props.handleDel.bind(this, index)}>删除</button> </li> )) } </ul> </div> ) } } const mapStateToProps = (state) => ({ list: state.getIn(["todo", "list"]) }) const mapDispatchToProps = (dispatch) => ({ handleDel(index) { let action = { type: "DEL_ITEM", value: index } dispatch(action); } }) export default connect(mapStateToProps, mapDispatchToProps)(List)
二、input.js
mapStateToProps
做用:
创建一个从(外部的)state对象到(UI 组件的)props对象的映射关系。
mapStateToProps会订阅 Store,每当state更新的时候,就会自动执行,从新计算 UI 组件的参数,从而触发 UI 组件的从新渲染
调用的时候this.props.【key值】
mapDispatchToProps
做用:
用来创建 UI 组件的参数到store.dispatch方法的映射。也就是说,它定义了哪些用户的操做应该看成 Action,传给 Store。它能够是一个函数,也能够是一个对象
mapDispatchProps的用法
const mapDispatchProps = (dispatch)=>({
函数名称:function(){
dispatch(action)
}
})
mapDispatchProps函数须要返回出去一个函数 这个函数中用dispatch传递一个action
最终子组件变成了UI组件 connect返回最终的容器组件,react-redux建议咱们把全部的数据都放在store中
调用:this.props.函数名称()