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.函數名稱()