hook函数——useReducer

1.useReducer定义

const [state, dispatch] = useReducer(reducer, initialArg, init?)

  • reducer:用于更新 state 的纯函数。参数为 state 和 action,返回值是更新后的 state。state 与 action 可以是任意合法值。
  • initialArg:用于初始化 state 的任意值。初始值的计算逻辑取决于接下来的 init 参数。
  • 可选参数 init:用于计算初始值的函数。如果存在,使用 init(initialArg) 的执行结果作为初始值,否则使用 initialArg。

2.useReducer用法

这里我使用ts的语法,根据定义可以知道,我们首先需要声明一个reducer函数,函数中包含两个参数,一个是数据的状态state,也就是初始值,另一个是对数据需要进行的操作,在函数体里面通过switch case语句指出不同的type需要进行的不同操作,这里实现的是一个计数器原理

type Action = { type: 'add' } | { type: 'del' };

function reducer(state: number, action: Action) {
  switch (action.type) {
    case 'add':
      return state + 1;
    case 'del':
      return state - 1;
    default:
      return state;
  }
}

在组件中初始化useReducer,给按钮分别添加响应事件,通过dispatch分发点击的type,就可以执行reducer函数里对应的操作了

function App() {
  const [state, dispatch] = useReducer(reducer, 0);

  const handleAdd = () => {
    dispatch({ type: 'add' });
  };

  const handleDel = () => {
    dispatch({ type: 'del' });
  };

  return (
    <div className="App">
      <h1>Count: {state}</h1>
      <button onClick={handleAdd}>Add</button>
      <button onClick={handleDel}>Del</button>
    </div>
  );
}

在这里插入图片描述
在这里插入图片描述

3.useState和useReducer区别

useState适用于处理简单的状态管理,适用于独立的、无关联的状态。
useReducer适用于处理复杂的状态逻辑,具有多个相关状态需要统一管理的情况。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值