news 2026/9/2 4:48:51

react中useReducer的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
react中useReducer的使用
// 导入React核心库及所需的类型和Hooks // FC: FunctionComponent 函数组件类型,用于约束组件类型 // useReducer: 用于复杂状态管理的Hook,替代useState处理多状态/复杂逻辑 // useState: 基础状态管理Hook(本示例未实际使用,保留导入仅作参考) import React, { FC, useReducer, useState } from 'react' /** * 定义状态的类型接口 * 约束useReducer中state的结构,确保类型安全 */ type StateType = { // 计数数值,核心状态字段 count: number } /** * 定义动作的类型接口 * 约束dispatch派发的action对象结构 */ type ActionType = { // 动作类型标识,用于reducer中区分不同操作 type: string // 若需要传递额外数据,可扩展该接口,例如:payload?: any } /** * 初始化状态值 * 作为useReducer的初始状态,定义count的初始值为100 */ const initialState: StateType = { count: 100 } /** * Reducer函数:纯函数,负责根据action更新状态 * 核心原则:不可变数据,返回新的state对象而非修改原对象 * @param state 当前状态(更新前的状态) * @param action 派发的动作对象,包含type标识 * @returns 新的状态对象(必须与StateType类型匹配) */ function reducer(state: StateType, action: ActionType) { // 根据action.type区分不同的状态更新逻辑 switch (action.type) { // 处理计数增加的动作 case 'increment': // 返回新状态:count在原有基础上加1 return { count: state.count + 1 } // 处理计数减少的动作 case 'decrement': // 返回新状态:count在原有基础上减1 return { count: state.count - 1 } // 处理未知动作类型,抛出错误提示 default: throw new Error(`未匹配到action类型: ${action.type}`) } } /** * 计数组件:使用useReducer管理计数状态 * FC类型约束:确保组件符合React函数组件的规范 */ const CountReducer: FC = () => { // 使用useReducer Hook创建状态和派发动作的方法 // 参数1: reducer函数(处理状态更新逻辑) // 参数2: initialState(初始状态) // 返回值: // state: 当前最新的状态对象(类型为StateType) // dispatch: 派发动作的函数,用于触发状态更新 const [state, dispatch] = useReducer(reducer, initialState) return ( // 片段标签:无需额外DOM节点包裹子元素 <> {/* 展示当前计数数值:从state中读取count */} <span>count:{state.count}</span> {/* 增加按钮:点击时派发increment类型的动作 */} <button onClick={() => dispatch({ type: 'increment' })} > + </button> {/* 减少按钮:点击时派发decrement类型的动作 */} <button onClick={() => dispatch({ type: 'decrement' })} > - </button> </> ) } // 导出组件,供其他模块导入使用 export default CountReducer

关键注释说明:

1. 类型定义:清晰标注StateType和ActionType的作用,约束状态和动作的结构,体现 TypeScript 的类型安全特性。

2. Reducer 函数:重点说明纯函数特性、不可变数据原则,以及每个 case 分支的作用。

3. useReducer 使用:解释 Hook 的参数和返回值,明确state(当前状态)和dispatch(动作派发函数)的含义。

4. UI 交互:标注按钮点击事件中dispatch的作用,说明如何通过派发不同类型的动作触发状态更新。

5. 代码结构:注释片段标签、导出语句等细节,帮助理解 React 组件的基本结构。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:02:36

软件测试人员的基本功包括哪些?

什么是基本功&#xff1f; 百度到的结果是&#xff1a;从事某种工作所必需的基本的知识和技能。 推理1&#xff1a;“基本”二字&#xff0c;意味着基本功必定是来源测试工作的基本流程。 推理2&#xff1a;“必须”二字&#xff0c;就意味者无论你是高级的测试开发&#xff…

作者头像 李华
网站建设 2026/9/2 20:48:06

100 天学会爬虫 · Day 9:CSS Selector 是什么?和 XPath 该怎么选?

在前一天我们学习了 XPath&#xff0c;它是爬虫中非常强大的解析工具。 但你在实际开发或阅读别人代码时&#xff0c;可能还会经常看到另一种写法&#xff1a;soup.select(".article-title")这就是 CSS Selector&#xff08;CSS 选择器&#xff09;。那么问题来了&am…

作者头像 李华
网站建设 2026/9/1 18:30:10

Windows系统文件stobject.dll丢失找不到问题 下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/9/1 11:17:00

软件缺少tdc.ocx文件 无法启动的情况 下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/9/2 21:03:25

Apache Dubbo分布式追踪全攻略:从入门到精通实战指南

Apache Dubbo分布式追踪全攻略&#xff1a;从入门到精通实战指南 【免费下载链接】dubbo The java implementation of Apache Dubbo. An RPC and microservice framework. 项目地址: https://gitcode.com/gh_mirrors/dubbo11/dubbo 在微服务架构日益普及的今天&#xff…

作者头像 李华
网站建设 2026/9/2 21:26:54

人力资源管理|基于springboot + vue人力资源管理系统(源码+数据库+文档)

人力资源管理 目录 基于springboot vue人力资源管理 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue人力资源管理 一、前言 博主介绍&#xff1a;✌️…

作者头像 李华