欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

useReducer使用詳解及其應(yīng)用場景

 更新時間:2024年03月13日 16:11:44   作者:小劉加油!  
這篇文章主要介紹了useReducer使用詳解及其應(yīng)用場景,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

useReducer 實際上是 useState 的升級版,都是用來存儲和更新 state,只是應(yīng)用的場景不一樣。

一般情況下,我們使用 useState 就足夠項目需要了,不多當(dāng)遇到以下場景時,使用useReducer 會更好些 。

  • 狀態(tài)邏輯復(fù)雜:當(dāng)狀態(tài)的更新邏輯比較復(fù)雜時,使用 useReducer 可以將這個邏輯封裝在 reducer 函數(shù)中,使代碼更加清晰易懂。
  • 多組件共享狀態(tài):當(dāng)多組件需要共享一個狀態(tài)時,可以將這個狀態(tài)放在父組件,然后通過 useReducer 將狀態(tài)和更新函數(shù)傳遞給子組件,從而實現(xiàn)狀態(tài)共享。
  • 需要處理連續(xù)的多個狀態(tài)更新:當(dāng)需要連續(xù)處理多個狀態(tài)更新時,使用 useReducer 可以幫助我們更好地管理狀態(tài)的變化和更新。

1.useReducer 參數(shù)

接收 3 個參數(shù):

  • reducer 函數(shù):(state, action)=> newState

在使用 useReducer 時,我們需要先定義一個 reducer 函數(shù),這個函數(shù)接收 2個參數(shù)

  • state :是當(dāng)前最新的狀態(tài)值
  • action:用于告訴 reducer 當(dāng)前執(zhí)行的操作,reducer 會根據(jù)不同的操作執(zhí)行不同的邏輯,從而更新不同的 state
  • newState:返回值,返回一個新的state

reducer 是一個純函數(shù),沒有任何 UI 和 副作用。

  • initState

這個沒什么好說的,是指初始的state

  • init :是一個函數(shù),(inState)=> initialState

這個參數(shù)是可選的,是一個函數(shù),參數(shù)是初始的state。

如果傳入了這個參數(shù),那么 初始state 就是 init(initState) 的返回結(jié)果

2.useReducer 返回值

返回的是一個數(shù)組

//
const [state, dispatch] = useReducer(reducer, initState, getInitData);
  • state :當(dāng)前的state
  • dispatch:是一個函數(shù),(action) => void

通過調(diào)用 dispatch 傳入 action,來告訴 reducer 應(yīng)該執(zhí)行什么操作,然后更新 state

比如:

dispatch({type: 'ADD', playod: 'xxx'})

舉一個簡單的例子:

import { useReducer } from 'react';

function reducer(state, action) {
  switch (action.type) {
    case 'increment':
      return state + 1;
    case 'decrement':
      return state - 1;
    default:
      throw new Error();
  }
}

function Counter() {
  const [count, dispatch] = useReducer(reducer, 0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
    </div>
  );
}

在上面的例子中,定義了一個 reducer 函數(shù)來管理狀態(tài)的變化,它根據(jù)傳入的 action 來執(zhí)行不同的邏輯,返回新的狀態(tài)。

在組件中,我們使用 useReducer 來初始化狀態(tài),并獲取到一個 dispatch 函數(shù)來觸發(fā)狀態(tài)的更新。

點擊按鈕,會調(diào)用 dispatch 函數(shù),并傳入一個包含 type 屬性的對象(即action)。這個對象用來表示將要進行的狀態(tài)更新操作。

注意:

使用 useReducer 可以幫助我們更好的管理組件狀態(tài),使代碼更易于維護和調(diào)試。

不過,在一般情況下,使用 useState 可能會更加簡單和高效,我們在日常開發(fā)中,需要根據(jù)實際情況進行評估。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • React中的Hooks路由跳轉(zhuǎn)問題

    React中的Hooks路由跳轉(zhuǎn)問題

    這篇文章主要介紹了React中的Hooks路由跳轉(zhuǎn)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • React路由規(guī)則定義與聲明式導(dǎo)航及編程式導(dǎo)航分別介紹

    React路由規(guī)則定義與聲明式導(dǎo)航及編程式導(dǎo)航分別介紹

    這篇文章主要介紹了React路由規(guī)則的定義、聲明式導(dǎo)航、編程式導(dǎo)航,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • React Hooks之useRef獲取元素示例詳解

    React Hooks之useRef獲取元素示例詳解

    這篇文章主要介紹了React Hooks之useRef獲取元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • React18?中的?Suspense?API使用實例詳解

    React18?中的?Suspense?API使用實例詳解

    這篇文章主要為大家介紹了React18?中的?Suspense?API使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • React組件對子組件children進行加強的方法

    React組件對子組件children進行加強的方法

    這篇文章主要給大家介紹了關(guān)于React組件中對子組件children進行加強的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用React具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • React+CSS 實現(xiàn)繪制橫向柱狀圖

    React+CSS 實現(xiàn)繪制橫向柱狀圖

    這篇文章主要介紹了React+CSS 實現(xiàn)繪制橫向柱狀圖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • React?中hooks之?React.memo?和?useMemo用法示例總結(jié)

    React?中hooks之?React.memo?和?useMemo用法示例總結(jié)

    React.memo是一個高階組件,用于優(yōu)化函數(shù)組件的性能,通過記憶組件渲染結(jié)果來避免不必要的重新渲染,合理使用React.memo和useMemo可以顯著提升React應(yīng)用的性能,本文介紹React?中hooks之?React.memo?和?useMemo用法總結(jié),感興趣的朋友一起看看吧
    2025-01-01
  • React通過redux-persist持久化數(shù)據(jù)存儲的方法示例

    React通過redux-persist持久化數(shù)據(jù)存儲的方法示例

    這篇文章主要介紹了React通過redux-persist持久化數(shù)據(jù)存儲的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • antd+react中upload手動上傳單限制上傳一張

    antd+react中upload手動上傳單限制上傳一張

    本文主要介紹了antd+react中upload手動上傳單限制上傳一張,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • react 父子組件之間通訊props

    react 父子組件之間通訊props

    這篇文章主要介紹了react 父子組件之間通訊props,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論