react- reducer

   react- reducer 是react中useState的升级版,用于较复杂的状态管理,与uesState类似,官方地址:状态管理 – React

1.何时使用

   useState用于基本数据类型或数组,对象,都有其操作方法,对于一般项目不需要使用reducer,但是对于多个方法操作更深的状态,使用useReducer的好处就体现出来了

2.useState使用方法

1.基本数据类型:

//引入
import { useState } from 'react'

//类型: string,number,boolean:     

const [count,setCount]=useState("count")

const [count,setCount]=useState(0)

const [count,setCount]=useState(false)

setCount("newCount") //string类型

setCount(count+1)    //number类型

setCount(true)       //boolean类型 

2.数组:

数组避免使用 (会改变原始数组)推荐使用 (会返回一个新数组)
添加元素pushunshiftconcat[...arr] 展开语法
删除元素popshiftsplicefilterslice
替换元素splicearr[i] = ... 赋值map
排序reversesort先将数组复制一份
//引入
import { useState } from 'react'

//类型: Array:     

const [count,setCount]=useState([1,2,3,4])


//删除:  删除数组中为1的选项

setCount(()=>count.filter(item => item !== 1))   


//更改:  数组中为1的选项更改为2

 setCount(() => count.map(item => {
          if (item === 1) {
                return 2
            } else {
                return item
            }}))

//添加 :添加 5

 setCount(() => [...count, 5])//末尾   setCount(() => [5,...count])  //开头

//排序

 const nextCount = [...Count];

 nextCount.reverse();
 
 setCount(nextCount)

 

3.对象

//引入
import { useState } from 'react'

//类型: Object:     

const [count,setCount]=useState({
        id: 1,
        name: '小明',
        sex: '男'
    })

setCount({ ...count,name: '小红' })

setCount({ ...count, name: '小红', sex: '女'})

3.useReducer使用方法

import React,{ useReducer } from 'react'

//初始化数据:数组中包含对象
const initCounts=
[{ id: 0, text: '小明', sex: '男' },
{ id: 1, text: '小红', sex: '男'  },
{ id: 2, text: '小李', sex: '男'  }]

const Test: React.FC = () => {

 //初始化 dispatch和countsReducer
 const [counts, dispatch] = useReducer(countsReducer, initCounts)

 //定义countsReducer函数分发增删改方法
 const countsReducer = (counts: any, action: any) => {
        switch (action.type) {
          //同useState中数组新增方法
            case 'add': {
                return [{
                    id: action.id,
                    text: action.text,
                    sex: false
                }, ...counts]
            }  
 
          //同useState中数组修改方法
            case 'upData': {
                return counts.map((item: any) => {
                    if (item.id === action.id) {
                        return { ...item, text: action.text }
                    } else {
                        return item
                    }
                })
            }

          //同useState中数组删除方法
            case 'delete': {
                return counts.filter((item: any) => item.id !== action.id)
            }
        }
    }
 //新增
function handAdd(){
   dispatch({
            type: 'add',     //和countsReducer中case对应
            id: nextId++,    //将ID绑定到action中
            text: text       //将text绑定到action中
        })}
//更改
 const handupData = (id: any, text: any) => {
        dispatch({
            type: 'updata',  //和countsReducer中case对应
            id: id,          //将ID绑定到action中
            text: text       //将text绑定到action中
        })
    }
//删除
 const handDelete = (id: any) => {
        dispatch({
            type: 'delete',  //和countsReducer中case对应
            id: id           //将ID绑定到action中
        }) 
    }


return(

<div>
  <button onClick={handAdd}>新增</button>
  <button onClick={()=>handupData('需要更改的ID','需要更改的文字')}>更改</button>
  <button onClick={()=>handDelete('需要删除的ID')}>删除</button>
</div>

)}


export default Test

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React-Redux是一个用于在React应用程序中集成Redux状态管理库的库。Reducer是Redux中的一个核心概念,用于描述状态的变化。它是一个纯函数,接收当前状态和一个动作作为参数,并返回一个新的状态。 在React-Redux中,我们通常会创建一个或多个Reducer来管理应用程序的各个部分的状态。Reducer可以单独或组合使用,以便处理不同部分的状态更新。 一个典型的Redux reducer函数看起来像这样: ```javascript const initialState = { // 初始状态 counter: 0, }; const reducer = (state = initialState, action) => { switch (action.type) { case 'INCREMENT': return { ...state, counter: state.counter + 1, }; case 'DECREMENT': return { ...state, counter: state.counter - 1, }; default: return state; } }; ``` 上面的例子中,我们定义了一个初始状态initialState对象和一个reducer函数。reducer函数接收两个参数,state和action。根据不同的action类型,在switch语句中对状态进行相应的更新,并返回新的状态。在这个例子中,我们定义了两种操作类型:INCREMENT和DECREMENT,分别用于增加和减少counter字段的值。 在React-Redux中,我们可以使用combineReducers函数将多个reducer组合为一个根reducer,并将其传递给Redux store。这样,在应用程序中的不同组件中就可以通过连接到store来访问和更新相应的状态了。 希望这个回答对你有所帮助!如果你需要更多关于React-Redux和reducer的信息,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值