redux之react-redux的使用

React:负责组件的UI界面渲染;
Redux:数据处理中心;
React-Redux:连接组件和数据中心,也就是把React和Redux联系起来。

他们三者之间的交互,可以由下图概括:

在这里插入图片描述
React-Redux
Redux 本身和React没有关系,只是数据处理中心,是React-Redux让他们联系在一起。

React-Redux提供两个方法:connect和Provider。

connect
connect连接React组件和Redux store。connect实际上是一个高阶函数,返回一个新的已与 Redux store 连接的组件类。

const VisibleTodoList = connect(
  mapStateToProps,
  mapDispatchToProps
)

VisibleTodoList就是由 react-redux 通过connect方法自动生成的容器组件。

mapStateToProps:从Redux状态树中提取需要的部分作为props传递给当前的组件。
mapDispatchToProps:将需要绑定的响应事件(action)作为props传递到组件上。

Provider
Provider实现store的全局访问,将store传给每个组件。
原理:使用React的context,context可以实现跨组件之间的传递。

React-Redux 将所有组件分成两大类:
UI 组件(presentational component)和容器组件(container component)

UI组件
只负责 UI 的呈现,不带有任何业务逻辑
没有状态(即不使用this.state这个变量)
所有数据都由参数(this.props)提供
不使用任何 Redux 的 API

容器组件
负责管理数据和业务逻辑,不负责 UI 的呈现
带有内部状态
使用 Redux 的 API

1:安装react-redux

npm install react-redux --save

2:引入提供者

import {Provider} from “react-redux”;

3:把stroe全局挂载

render(
<Provider store={store}>
<Home header="头部描述" content="内容描述" footer="底部描述"  isLogin={true}/>
</Provider>
,document.getElementById("root")); 

4 新建一个子组件 MyRedux带store指令的

整个代码变成

import React, { Component } from 'react'
import { connect } from 'react-redux'

export class MyRedux extends Component {
    render() {
        return (
            <div>
                
            </div>
        )
    }
}

const mapStateToProps = (state) => ({//设置要的属性
        
})

const mapDispatchToProps = {//设置要的方法
    
}

export default connect(mapStateToProps, mapDispatchToProps)(MyRedux)

修改方法 导入需要的方法

import React, { Component } from 'react'
import { connect } from 'react-redux'
import {add,reduce} from "../../action/numAction"

export  class MyRedux extends Component {
    constructor(props){
        super(props);
    }
    render() {
        return (
            <div>
                你好
                <button onClick={this.props.reduce}>-</button>
               <span>{this.props.num}</span>
               <button onClick={this.props.add} >+</button>
            </div>
        )
    }
}

核心点 
const mapStateToProps = (state) => ({//设置要的数据放入props中
  num:state.fn.num
})

const mapDispatchToProps = {//设置要的方法放入props中
    add,reduce
}
export default connect(mapStateToProps, mapDispatchToProps)(MyRedux)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值