首页 > 其他分享 >React — useReducer使用方法

React — useReducer使用方法

时间:2024-03-15 14:00:57浏览次数:19  
标签:return type reducer useReducer React state action 方法

1.定义一个reducer函数(根据不同的action返回不同的新状态)

2.在组件中调用useReducer,并传入reducer函数和状态的初始值

3.事件发生时,通过dispatch函数分发一个action对象(通知reducer)要返回哪个新状态并渲染UI

import { useReducer } from "react"

// 1.定义一个reducer函数,根据不同的action 返回不同的状态
function reducer(state,action){
    if(action.type === 'add'){
        return state +=1
    }else if(action.type === 'sub'){
        return state -=1
    }else{
        return state
    }
}
const Board= ()=>{
    // 组件中调用useReducer hook函数  useReducer(reducer,0)=>[state,dispatch]
    const [state,diapatch] = useReducer(reducer,0)
    return <>

        <div>
            {/* 调用dispatch({type:'add'})=>通知reducer产生一个新的状态 并更新视图 */}
            <button onClick={()=>diapatch({type:'sub'})}>-</button>
            <span>{state}</span>
            <button onClick={()=>diapatch({type:'add'})}>+</button>
        </div>
    
    
    </>
}

export default Board

4.分派action时传参

function reducer(state,action){
    if(action.type === 'add'){
        return state +=1
    }else if(action.type === 'sub'){
        return state -=1
    }else if(action.type === 'set'){
        return state = action.payload //action.payload是传过来的参数
    }else{
        return state
    }
}


 <button onClick={()=>diapatch({type:'set',payload :100})}>更新</button>

 

标签:return,type,reducer,useReducer,React,state,action,方法
From: https://www.cnblogs.com/qinlinkun/p/18075254

相关文章

  • vue3 中ref和reactive的区别讲解
    1.定于数据角度对比:ref用来定义:基本类型数据reactive用来定义:对象、或数组类型的数据备注:ref也可以用来定义对象或数组类型数据,它内部会自动通过reactive转为代理对象2.原理角度对比:ref通过Object.defineProperty()的get与set来实现响应式的(数据劫持)reactive通过......
  • React Antd 的ProTable 如何默认展开树结构
    1、defaultExpandAllRows:true  defaultExpandAllRows设为true就可以了<ProTablerowKey="key"columns={rightBomColumnArr}dataSource={rightBomTableTreeData}......
  • ESD电子枪建模与系统仿真方法概述
    0引言        ESD电子枪的全尺寸建模对于电子枪内部器件的还原度虽然很高,但是该方法受限于时域算法,需要许多时间步长来稳定静态场,并且需要许多单元才能达到所需的精度,非常耗时,且对于大多数的ESD应用场景来说,并不需要充分考虑其内部的物理过程。关于全尺寸建模,参考......
  • 在 Android 上恢复已删除文件的 5 种简单方法
    您可能会因为意外删除、未完成的Android更新、手机意外关机等原因而丢失Android上的重要数据。新技术的发展使许多手机功能或程序能够从内部恢复丢失的数据。在Android上恢复已删除文件的5种简单方法然而恢复成功率的不确定性也成为人们克服数据丢失困境的重要考虑......
  • Django ORM 常用的13个方法
    DjangoORM常用的13个方法介绍一个可以以py脚本方式运行ORM操作的方法:可在项目内新建个py文件,复制项目内manage.py文件中的以下代码:if__name__=="__main__":os.environ.setdefault("DJANGO_SETTINGS_MODULE","ORM1.settings")importdjango#手动添加......
  • 猫头虎分享已解决Bug | org.springframework.dao.DuplicateKeyException异常的正确解
    博主猫头虎的技术世界......
  • python的字符串方法举例
    Python中的字符串对象提供了许多内置的方法,用于操作和处理字符串。以下是一些常用的字符串方法及其示例:1.split()将字符串分割为子字符串列表,并返回该列表。s="HelloWorld"words=s.split()#默认按空格分割print(words)#输出:['Hello','World']#也可以指定分......
  • QT6.6下android编译及调用自定义so库方法
    一.问题概述   最近需要把QT程序从5.12的桌面环境移植到QT6.6的android下,项目中有很多DLL库要重新编译为so文件,移植到android环境然后调用,中间有很多坑,虽然大体和桌面系统用法相同,但细节上还是有区别的,尤其是so库的调用方法上,过程中也是debug了两天才解决,如果你也遇到了同......
  • 主流DVR/NVR视频接入介绍:NVR接入视频监控平台的方法(视频监控接入NVR最详细最全面的介
    目   录第一章 NVR使用国标接入视频监控平台第一步:NVR国标设置第二步:管理平台接入1.2.1接入设备选项配置1.2.2通道获取第二章 NVR使用RTSP接入视频监控平台第一步:管理平台添加RTSP设备类型2.1.1接入设备选项配置第二步:NVR的RTSP设置2.2.1RTSP接入条件2.2......
  • CCLINK转Profinet网关功能介绍及配置方法
    CC-LINK转Profinet网关功能介绍及配置方法CC-LINK转Profinet网关(XD-PNCR20)支持CC-Link系统,采用一种开放式架构的工业现场总线协议,允许不同厂商的设备依此协议进行通信。由于其良好的兼容性,CC-Link广泛使用在在制造产业中的机器控制或程序控制中,也使用在设备管理及智能建筑系统中,包......