react中redux的基本使用

一、什么情况下使用 Redux

在这里插入图片描述

Redux是React中常用的状态管理工具,它可以帮助我们更好地管理组件之间共享的数据和状态。使用Redux,我们可以把所有组件需要共享的状态数据集中到一个全局的store中,方便我们管理和维护。

另外,Redux也能够提高应用程序的可维护性,使得代码更易于理解和调试。Redux的三大原则——单一数据源、状态只读、纯函数更新状态——保证了应用程序的可预测性和稳定性。

因此,在大型的React应用程序开发中,使用Redux来管理应用程序的状态是值得推荐的。但是在小型应用程序中,如果应用的状态较为简单,可以直接通过React的内置状态管理来实现。

二、使用redux

2.1、安装redux

npm i redux

2.2、需要的相应文件
通过上述原理图,我们可以看出redux的重要组成部分:
1.Store:store来管理应用程序的状态
2.Reducer:定义对状态操作的方法(纯函数),需要传入一个Action对象
3.Action:状态对象(type:操作方法名,数据)
4.components:需要进行状态管理的组件

2.3、创建相应的文件
2.3.1.创建组件(组件放在components目录下):

import React, { Component } from 'react'
import store from '../../redux/store'

import {creDecAction,creIncAction} from '../../redux/count_action'

export default class Count extends Component {

  //加法
  increment = ()=>{
    const {value} = this.selectNumber
    store.dispatch(creIncAction(value*1))
  }
  //减法
  decrement = ()=>{
    const {value} = this.selectNumber
    store.dispatch(creDecAction(value*1))
  }
  //奇数再加
  incrementIfOdd = ()=>{
    const {value} = this.selectNumber
    const cont = store.getState();
    if(cont % 2 !== 0)
    store.dispatch(creIncAction(value*1))
  }
  //异步加
  incrementAsync = ()=>{
    const {value} = this.selectNumber
    setTimeout(()=>{
      store.dispatch(creIncAction(value*1))
    },500)
    
  }
  render() {
    return (
      <div>
        <h1>当前求和为: {store.getState()}</h1>
         {/* 选择一次加减多少 */}
        <select ref={c=>this.selectNumber=c} >
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
        </select>
         {/* 点击加对应的数 */}
        <button onClick={this.increment}>+</button>
         {/* 点击减对应的数 */}
        <button onClick={this.decrement}>-</button>
        {/* 点击后 求和为奇数  才加对应的数 */}
        <button onClick={this.incrementIfOdd}>当前求和为奇数在加</button>
        {/* 等待一会再加 */}
        <button onClick={this.incrementAsync}>异步加</button>
      </div>
    )
  }
}

2.3.2、创建action对象 中的 typ类型常量值(放在redux目录下):

// 定义 action对象 中 type类型的常量值

export const INCREMENT = 'increment'
export const DECREMENT = 'decrement'

2.3.3、创建action(放在redux目录下)

import {INCREMENT,DECREMENT} from './constant'
export function creIncAction(data){
    return {type:INCREMENT,data}
}

export function creDecAction(data){
    return {type:DECREMENT,data}
}

2.3.4、创建reducer(放在redux目录下)

import {INCREMENT,DECREMENT} from './constant'

//初始化状态的值
const initState = 0;
export default function countReducer(preState=initState, action) {
    
    const { type, data } = action
 //根据type,执行相应的操作
    switch (type) {
        case INCREMENT:
            return preState + data
        case DECREMENT:
            return preState - data

        default:
           return preState;
    }
}

2.3.5、创建store(放在redux目录下)

import { createStore } from 'redux'

import countReducer from './count_reducer'

export default createStore(countReducer)

2.3.6、最终目录结构
在这里插入图片描述
个人博客:余生的学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
react-redux是一个流行的用于在React应用管理全局状态的库。ReduxJavaScript一个用于状态管理的工具,它通过将状态存储在单一的全局状态树,并使用纯函数来处理状态的变化,使得状态管理变得简单而可预测。 在React使用Redux,通常需要使用react-redux库提供的connect函数。connect函数是一个高阶组件,用于连接React组件和Redux的状态管理机制。 connect函数的基本用法是将React组件作为参数传递给connect,并在返回的函数配置所需的状态和动作。它接受两个参数:mapStateToProps和mapDispatchToProps。 mapStateToProps是一个函数,用于从Redux的全局状态树选择所需的状态,并作为React组件的属性传递给组件。这样,组件可以通过props访问到所需的状态,并将其渲染到页面。 mapDispatchToProps是一个函数,用于将Redux的动作绑定到组件的props上。这样,组件可以通过调用props的方法来触发Redux定义的动作。 connect函数还可以接收一个可选的第三个参数,用来配置其他属性,比如在组件未连接到Redux时是否抛出警告。 使用connect函数后,就可以将Redux的状态和动作与React组件连接起来,并使其能够访问和操作全局状态。这样,组件就可以根据状态变化来更新UI,并通过触发动作来改变全局状态。 总而言之,react-redux的connect函数提供了一种简单而方便的方式来连接React组件与Redux的状态管理机制,使得在React应用管理全局状态变得更加容易和可维护。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值