useState vs useReducer使用场景介绍

本文探讨了在React Hooks中,何时选择useState和useReducer。useState适合管理基本类型的状态,而useReducer适用于复杂状态管理和有相关性的状态聚合。在处理复杂业务逻辑和多个相关状态时,useReducer能提供更清晰的代码结构。
摘要由CSDN通过智能技术生成

React Hooks

React Hooks 推出以后,函数组件中经常使用useState保存状态。用过一段时间后发现过多的useState导致页面非常臃肿,具有关联性的状态分散,不利于维护。

基于此,其实React在推出管理状态的Hook时就考虑到了,另一个useReducer就是用于解决上面的现象。那么考虑其使用场景就是必须的了。

何时使用useState或useReducer

一个典型的例子:累加器

import {
    useState } from 'react'

const Counter = () => {
   
  const [count, setCount] = useState(0)
  const increase = () => {
   
    setCount((count) => count + 1)
  }
  const decrease = () => {
   
    setCount((count) => count - 1)
  }

  return (
    <div>
      <h2>Counter whit useState</h2>
      <p>Count: {
   count}</p>
      <div>
        <button type="button" onClick={
   increase}>
          +
        </button>
        <button type="button" onClick={
   decrease}>
          -
        </button>
      </div>
    </div>
  )
}

export default Counter

那么将它改造成useReducer来看看:

import {
    useReducer } from 'react'

const counterReducer = (state, action) => {
   
  switch (action.type) {
   
    case 'INCREASE':
      return {
    ...state, count: action.count + 1 }
    case 'DECREASE':
      return {
    ...state, count: action.count - 1 }
    default:
      throw new Error()
  }
}
const Counter 
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值