国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React 新版官方文檔 (一) useReducer 用法詳解

這篇具有很好參考價(jià)值的文章主要介紹了React 新版官方文檔 (一) useReducer 用法詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

React 新版官方文檔 (一) useReducer 用法詳解,react.js,javascript,前端,typescript,vue.js

useReducer

useReducer 是一個(gè)可以讓你向組件中添加 reducer 的 Hook

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

基本用法

const reducer = (state, action) => {
...
}
const MyComponent = () => {
    const [state, dispatch] = useReducer(reducer, {age: 42})
    const handleClick = () => {
        dispatch({type:'increase'})
    }
   ...
}

比 useState 多了一個(gè)處理函數(shù),該函數(shù)可以根據(jù)不同的分發(fā)狀態(tài)來(lái)對(duì)應(yīng)的改變狀態(tài)

注意:state 不可修改 不能這樣寫, reducer 函數(shù)應(yīng)當(dāng)返回一個(gè)新對(duì)象

function reducer(state, action) {
  switch (action.type) {
    case 'incremented_age': {
      // ?? Don't mutate an object in state like this:
      state.age = state.age + 1;
      return state;
    }
function reducer(state, action) {
  switch (action.type) {
    case 'incremented_age': {
      // ? Instead, return a new object
      return {
        ...state,
        age: state.age + 1
      };
    }
    

不要重新執(zhí)行初始函數(shù) 第一種寫法會(huì)導(dǎo)致每次渲染時(shí)候都調(diào)用 createInitialState 函數(shù) 造成性能浪費(fèi)

function createInitialState(username) {
  // ...
}
// ?
function TodoList({ username }) {
  const [state, dispatch] = useReducer(reducer, createInitialState(username));
  
// ?
function TodoList({ username }) {
  const [state, dispatch] = useReducer(reducer, username, createInitialState);
  // ...

dispatch 后如何使用最新的狀態(tài)值

調(diào)用 dispatch 函數(shù)不會(huì)更改運(yùn)行代碼中的狀態(tài) ,使用最新的狀態(tài)值應(yīng)該是這樣寫文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-545783.html

function handleClick() {
  console.log(state.age);  // 42

  dispatch({ type: 'incremented_age' }); // Request a re-render with 43
  console.log(state.age);  // Still 42!

  setTimeout(() => {
    console.log(state.age); // Also 42!
  }, 5000);
}

const action = { type: 'incremented_age' };
dispatch(action);
const nextState = reducer(state, action);
console.log(state);     // { age: 42 }
console.log(nextState); // { age: 43 }

參考

  • https://react.dev/reference/react/useReducer

到了這里,關(guān)于React 新版官方文檔 (一) useReducer 用法詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • React js原生 詳解 HTML 拖放 API(鼠標(biāo)拖放(拖動(dòng))功能)

    React js原生 詳解 HTML 拖放 API(鼠標(biāo)拖放(拖動(dòng))功能)

    最近碰到了個(gè)需求,大概就是要通過(guò)可視化拖拽的方式配置一個(gè)冰柜,需要把預(yù)設(shè)好的冰柜內(nèi)部架子模板一個(gè)個(gè)拖到冰箱內(nèi)。一開始的想法是用鼠標(biāo)事件(mousedown、mouseup等)那一套去實(shí)現(xiàn),能實(shí)現(xiàn)但是過(guò)程過(guò)于復(fù)雜,需要控制的狀態(tài)太多了。其實(shí) Web Api 為 html 元素拖拽量身定

    2024年01月22日
    瀏覽(36)
  • React井字棋游戲官方示例

    React井字棋游戲官方示例

    在本篇技術(shù)博客中,我們將介紹一個(gè)React官方示例:井字棋游戲。我們將逐步講解代碼實(shí)現(xiàn),包括游戲的組件結(jié)構(gòu)、狀態(tài)管理、勝者判定以及歷史記錄功能。讓我們一起開始吧! 在這個(gè)井字棋游戲中,我們有以下組件: Square 組件:表示游戲棋盤上的每一個(gè)方格。 Board 組件:

    2024年02月14日
    瀏覽(11)
  • llama_index 官方文檔閱讀筆記 (持續(xù)更新版)

    llama_index 官方文檔閱讀筆記 (持續(xù)更新版)

    鏈接:?LlamaIndex ?? v0.10.17 LlamaIndex 是一個(gè)基于?LLM?的應(yīng)用程序的數(shù)據(jù)框架,它受益于上下文增強(qiáng)。 這種LLM系統(tǒng)被稱為RAG系統(tǒng),代表“檢索-增強(qiáng)生成” 。 LlamaIndex 提供了必要的抽象,以便更輕松地?cái)z取、構(gòu)建和訪問(wèn)私有或特定于域的數(shù)據(jù),以便將這些數(shù)據(jù)安全可靠地注入 L

    2024年04月10日
    瀏覽(23)
  • 【React】forwardRef 用法

    forwardRef :允許你的組件使用 ref 將一個(gè) DOM 節(jié)點(diǎn)暴露給父組件。 案例分析:ref 屬性是 React 的特殊屬性,不能直接使用。 上面就會(huì)彈出報(bào)錯(cuò)信息: 如果想傳遞 ref,這時(shí)候就要借助 forwardRef 函數(shù)

    2024年02月11日
    瀏覽(27)
  • [React] useRef用法和特性

    [React] useRef用法和特性

    一般在使用react-hook的時(shí)候,我們用到最多的就是定義變量,以及對(duì)應(yīng)的修改變量 下面是一個(gè)最基本的 react-hook 應(yīng)用程序 以上并不是以使用useState的方式來(lái)進(jìn)行對(duì)useRef的襯托,兩者功能是不同的,只是便于區(qū)分 但是如果我想讓瀏覽器渲染的時(shí)候,讓他的次數(shù)自增,這樣就會(huì)有

    2024年02月01日
    瀏覽(33)
  • React的jsx的用法

    React是一個(gè)流行的JavaScript庫(kù),用于構(gòu)建用戶界面。它使用一種名為JSX的語(yǔ)法擴(kuò)展來(lái)描述組件的結(jié)構(gòu)和樣式。JSX是React的核心語(yǔ)言之一,它允許開發(fā)人員在JavaScript中編寫HTML,從而使代碼更加簡(jiǎn)潔和易于閱讀。 JSX是一種語(yǔ)法擴(kuò)展 ,它允許開發(fā)人員在JavaScript中編寫類似于HTML的代

    2024年02月10日
    瀏覽(17)
  • React-hooks有哪些用法?

    React Hooks 是 React 16.8 引入的一種新的特性,用于在函數(shù)組件中使用狀態(tài)和其他 React 特性。下面列舉了一些常見的 React Hooks 的用法: 1:useState:用于在函數(shù)組件中添加狀態(tài)。: 2:useEffect:用于在函數(shù)組件中執(zhí)行副作用操作(如訂閱、數(shù)據(jù)獲取等)。

    2024年02月08日
    瀏覽(21)
  • react中的useState和useImmer的用法

    react中的useState和useImmer的用法

    react中文官網(wǎng)教程 在函數(shù)式組件中,可以使用 useState 這個(gè) Hook 來(lái)定義和管理組件的狀態(tài)。 useState 接受一個(gè)初始狀態(tài)作為參數(shù),并返回一個(gè)包含 state 和更新 state 的方法的數(shù)組。 下面是一個(gè)例子,展示了如何在函數(shù)式組件中定義自己的 state: 在上面的例子中,我們使用 useStat

    2024年02月07日
    瀏覽(20)
  • 章節(jié) 1:入門React.js -《React.js手把手教程:從初學(xué)者到實(shí)戰(zhàn)高手》- 第一部分:React.js基礎(chǔ)

    章節(jié) 1:入門React.js -《React.js手把手教程:從初學(xué)者到實(shí)戰(zhàn)高手》- 第一部分:React.js基礎(chǔ)

    《React.js手把手教程:從初學(xué)者到實(shí)戰(zhàn)高手》 第一部分:React.js基礎(chǔ) 在我們開始探索 React.js 的奇妙世界之前,讓我們先來(lái)認(rèn)識(shí)一下這個(gè)“ 人人都在談?wù)?”的家伙。你可以把 React.js 想象成是一個(gè)全棧工程師的一大碗甜品,不僅好吃,還可以讓你的應(yīng)用更美味!那么,究竟什么

    2024年02月11日
    瀏覽(95)
  • React hooks文檔筆記(四) useRef

    React hooks文檔筆記(四) useRef

    當(dāng)想讓組件記住一些信息,又不想觸發(fā)新的渲染,可以使用ref:總是返回同一個(gè)對(duì)象。 1. state 和 refs 的比較 refs(普通的 JavaScript 對(duì)象) state 更改時(shí) 不觸發(fā)重新渲染 更改時(shí) 觸發(fā)重新渲染 可變的——修改/更新 current ’s value (修改完立即生效 ?ref.current = 5; ?? console.log(ref

    2024年02月12日
    瀏覽(41)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包