010react18-useReducer

useReducer

作用:它在每次重新渲染的時(shí)候能夠緩存計(jì)算的結(jié)果

import { useReducer } from 'react'

// 1. 定義reducer函數(shù),根據(jù)不同的action返回不同的新狀態(tài)
function reducer(state, action) {
  switch (action.type) {
    case 'INC':
      return state + 1
    case 'DEC':
      return state - 1
    default:
      return state
  }
}

function App() {
  // 2. 使用useReducer分派action
  const [state, dispatch] = useReducer(reducer, 0)
  return (
    <>
      {/* 3. 調(diào)用dispatch函數(shù)傳入action對象 觸發(fā)reducer函數(shù),分派action操作,使用新狀態(tài)更新視圖 */}
      <button onClick={() => dispatch({ type: 'DEC' })}>-</button>
      {state}
      <button onClick={() => dispatch({ type: 'INC' })}>+</button>
    </>
  )
}

export default App
01.png

分派action傳參

做法:分派action時(shí)如果想要傳遞參數(shù),需要在action對象中添加一個(gè)payload參數(shù),放置狀態(tài)參數(shù)

// 定義reducer

import { useReducer } from 'react'

// 1. 根據(jù)不同的action返回不同的新狀態(tài)
function reducer(state, action) {
  console.log('reducer執(zhí)行了')
  switch (action.type) {
    case 'INC':
      return state + 1
    case 'DEC':
      return state - 1
    case 'UPDATE':
      return state + action.payload
    default:
      return state
  }
}

function App() {
  // 2. 使用useReducer分派action
  const [state, dispatch] = useReducer(reducer, 0)
  return (
    <>
      {/* 3. 調(diào)用dispatch函數(shù)傳入action對象 觸發(fā)reducer函數(shù),分派action操作,使用新狀態(tài)更新視圖 */}
      <button onClick={() => dispatch({ type: 'DEC' })}>-</button>
      {state}
      <button onClick={() => dispatch({ type: 'INC' })}>+</button>
      <button onClick={() => dispatch({ type: 'UPDATE', payload: 100 })}>
        update to 100
      </button>
    </>
  )
}

export default App
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • react筆記 腳手架環(huán)境:全局安裝 npm i create-react-app -g 進(jìn)入目錄create-r...
    AirSmith閱讀 481評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,564評(píng)論 19 139
  • 一. 概述 在 React16.8推出之前,我們使用react-redux并配合一些中間件,來對一些大型項(xiàng)目進(jìn)行狀...
    QiShare閱讀 1,018評(píng)論 0 4
  • Hook使用規(guī)則 確保在React函數(shù)頂層使用Hooks,不能在循環(huán)、條件、嵌套函數(shù)中調(diào)用:當(dāng)單個(gè)組件中有多個(gè)Ho...
    驚鴻塵閱讀 2,620評(píng)論 0 7
  • 使用React Hooks有什么優(yōu)勢? 什么是hookshook 是一些可以讓你在函數(shù)組件里面鉤入react st...
    Lyan_2ab3閱讀 397評(píng)論 0 1

友情鏈接更多精彩內(nèi)容