React-redux使用(一)

7 篇文章 0 订阅
本文介绍了如何使用React-Redux进行状态管理,包括创建reducer处理不同action,创建store挂载reducer,以及如何在组件间通过connect传递和接收数据。适合复习或初学者参考。
摘要由CSDN通过智能技术生成

最近有在使用react-redux进行全局状态托管,长时间不用遗忘了不少,所以今天记录下一个基本使用代码,以便之后复习使用

  1. 下载redux和react-redux两个包
    npm i redux
    npm i react-redux
  2. 在src页面创建reducerstore两个文件,在reducer中用为action.type设置不同的值,通过判断action.type 的值来申明不同的处理函数
  3. 在store文件中 用createStore方法挂载reducer中的处理函数
  4. 在需要用来接收值和传递值的页面使用connect包裹组件加强组件,在页面中使用props接收store中的state中的数据

reducer页面代码

// 初始化state
const initState = {
    sum: 10
}

exports.reducer = (state = initState, action) => {
// 判断action传过来的值并作数据处理,通过return返回
    switch (action.type) { 
        case 'add-action':
            return {
                sum: state.sum + 1
            }
        case 'action':
            return {
                sum: state.sum - 1
            }
        default:
            return state
    }
}

store代码

import {createStore} from 'redux'
import {reducer} from '../reducer/index'

export default createStore (reducer)

在App.js页面导入react-redux中的Provider和我们自己创建的store,用Provider包裹我们的组件
App代码


import ComA from './pages/comA'
import ComB from './pages/ComB'
import { Provider } from 'react-redux'
import store from './store/index'

function App() {
  return (
    <Provider store={store}> // 将store挂在到Provider传递给子组件,子组件通过props接收
      <div className="App">
        <ComA />
        <br />
        <ComB />
      </div>
    </Provider>
  );
}

export default App;

connect包裹需要使用公共数据管理的组件,通过props来获取reducer中的方法

组件A代码

import React from "react";
import { connect } from 'react-redux'
class ComA extends React.Component {
    sendAdd = () => {
        this.props.sendAction()
    }
    sendCut=()=>{
        this.props.Action()
    }
    render() {
        return (
            <div>
                <button onClick={this.sendAdd}>+++</button>
                <button onClick={this.sendCut}>---</button>
            </div>
        )
    }
}

const getDoWork = (dispatch) => {
    return {
        sendAction: () => {
            dispatch({
                type: 'add-action'
            })
        },
        Action:()=>{
            dispatch({
                type:'action'
            })
        }
    }
}
// 发送数据使用的是connect第二个参数
export default connect(null, getDoWork)(ComA)  

组件B代码

import React from "react";
import { connect } from 'react-redux'

class ComB extends React.Component {
    render() {
        return (
            <button>{this.props.sum}</button>
        )
    }
}


const Receive= (state) => {
    return state
}
// 接收数据使用的是connect第一个参数
export default connect(Receive)(ComB)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值