最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React useContext與useReducer函數(shù)組件使用

 更新時間:2023年02月06日 10:24:47   作者:碰磕  
useContext和useReducer 可以用來減少層級使用, useContext,可以理解為供貨商提供一個公共的共享值,然后下面的消費者去接受共享值,只有一個供貨商,而有多個消費者,可以達到共享的狀態(tài)改變的目的

useContext

介紹

與class中寫法對比減少了代碼量,省去了返回回調(diào)函數(shù)獲取傳來的值

使用

/**
 * useContext(減少組件層級)
 */
 import React, { useState, useRef, useContext } from 'react';
 const GlobalContext=React.createContext()//創(chuàng)建Context對象
function FilmItem(){
    const value=useContext(GlobalContext)
    console.log(value)//可以拿到傳過來的value
        return(
                <div>
                    <span>{value.name}CSDN碰磕</span>
                </div>
             )
}
 export default function MyContext() {
    return (
        //供應(yīng)商
        <GlobalContext.Provider value={{
            name:"碰磕",
            age:18
        }}>
        <div>
            Context方案
            <FilmItem></FilmItem>
        </div>
        </GlobalContext.Provider>
    );
 }

通過**useContext(GlobalContext)**就可以獲取到傳來值

useReducer

介紹

將多個state放到對象中,進行統(tǒng)一管理

使用(簡單示例實現(xiàn)計算器)

/**
 * useReducer(減少組件層級)
 */
 import React, {useReducer } from 'react';
 //處理函數(shù)
 const reducer=(pervState,action)=>{    //第一個參數(shù)是原數(shù)據(jù),第二個參數(shù)是傳來的數(shù)據(jù)
    let newarr={...pervState};//定義新對象拷貝
    switch(action.type){
        case "pengke-jian":
            newarr.count--
            return newarr        
        case "pengke-jia":
            newarr.count++
            return newarr
        default:
            return pervState   
    }
 }
 //外部的對象
 const intialState={
     count:0,
 }
 export default function MyReducer() {
    const [state,dispatch]=useReducer(reducer,intialState)
    return (
        <div>
            <button onClick={()=>{
                dispatch({
                    type:"pengke-jian"
                })
            }}>-</button>
            <span>{state.count}</span>
            <button onClick={()=>{
                dispatch({
                    type:"pengke-jia"
                })
            }}>+</button>
        </div>   
    )
 }

將useContext與useReducer整合

實現(xiàn)多個組件通過他們倆互相通信傳值…

/**
 * useReducer+useContext
 */
 import React, {useContext, useReducer } from 'react';
 const intialState={
     num1:"666",
     num2:"碰磕"
 }
 const reducer=(state,action)=>{
    let newarr={...state};
    switch(action.msg){
        case "change-num1":
            newarr.num1=action.value
            return newarr
        case "change-num2":
            newarr.num2=action.value
            return newarr
        default:
            return newarr
    }
 }
 const GlobalContext = React.createContext();
 export default function MyReducer2() {
    const [state,dispatch]=useReducer(reducer,intialState)
    return (
        <GlobalContext.Provider value={
            {
                state,dispatch
            }
        }>
        <div>
           <Children1 />
           <Children2 />
           <Children3 />
        </div>   
        </GlobalContext.Provider>
    )
 }
function Children1(){
    const {dispatch}=useContext(GlobalContext)//這里傳值
    return <div style={{background:"red"}}>
        <button onClick={()=>{
            dispatch({
                msg:"change-num1",
                value:"被我修改了num1哈哈哈"
            })
        }}>改變值1</button>
        <button onClick={()=>{
            dispatch({
                msg:"change-num2",
                value:"被我修改了num2哈哈哈"
            })
        }}>改變值2</button>
    </div>
}
function Children2(){
    const {state}=useContext(GlobalContext)//拿到值
    return <div style={{background:"orange"}}>Children2---{state.num1}</div>
}
function Children3(){
    const {state}=useContext(GlobalContext)//拿到值
    return <div style={{background:"skyblue"}}>Children3---{state.num2}</div>
}

到此這篇關(guān)于React useContext與useReducer函數(shù)組件使用的文章就介紹到這了,更多相關(guān)React useContext與useReducer內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react組件實例屬性state詳解

    react組件實例屬性state詳解

    這篇文章主要介紹了react組件實例屬性state,有狀態(tài)state的組件稱作復(fù)雜組件,沒有狀態(tài)的組件稱為簡單組件,狀態(tài)里存儲數(shù)據(jù),數(shù)據(jù)的改變驅(qū)動頁面的展示,本文結(jié)合實例代碼給大家詳細講解,需要的朋友可以參考下
    2023-02-02
  • react顯示文件上傳進度的示例

    react顯示文件上傳進度的示例

    這篇文章主要介紹了react顯示文件上傳進度的示例,幫助大家更好的理解和學(xué)習(xí)使用react,感興趣的朋友可以了解下
    2021-04-04
  • 淺談React多個setState會調(diào)用幾次

    淺談React多個setState會調(diào)用幾次

    在React的生命周期鉤子和合成事件中,多次執(zhí)行setState,會被調(diào)用幾次,本文就詳細的介紹一下,感興趣的可以了解一下
    2021-11-11
  • 詳解React native fetch遇到的坑

    詳解React native fetch遇到的坑

    這篇文章主要介紹了詳解React native fetch遇到的坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • React?component.forceUpdate()強制重新渲染方式

    React?component.forceUpdate()強制重新渲染方式

    這篇文章主要介紹了React?component.forceUpdate()強制重新渲染方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • react hook使用useState更新數(shù)組,無法更新問題及解決

    react hook使用useState更新數(shù)組,無法更新問題及解決

    這篇文章主要介紹了react hook使用useState更新數(shù)組,無法更新問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • ReactJs實現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)顯示的組件的示例

    ReactJs實現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)顯示的組件的示例

    本篇文章主要介紹了ReactJs實現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù)顯示的組件的示例,非常具有實用價值,需要的朋友可以參考下
    2017-08-08
  • 詳解React native全局變量的使用(跨組件的通信)

    詳解React native全局變量的使用(跨組件的通信)

    本篇文章主要介紹了詳解React native全局變量的使用(跨組件的通信),具有一定的參考價值,有興趣的同學(xué)可以了解一下
    2017-09-09
  • React中CSS模塊沖突的問題及解決

    React中CSS模塊沖突的問題及解決

    本文將探討 React 中 CSS 模塊沖突的常見原因,并提供解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • React捕獲并處理異常的方式

    React捕獲并處理異常的方式

    這篇文章主要給大家介紹了React優(yōu)雅的捕獲并處理渲染異常方式,文章通過代碼示例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11

最新評論

宝坻区| 苏尼特左旗| 广平县| 吴江市| 梓潼县| 博客| 仪征市| 广州市| 铜川市| 达尔| 庆元县| 民乐县| 房山区| 通化市| 普陀区| 吴桥县| 长春市| 遵化市| 普兰店市| 克山县| 巴马| 会泽县| 襄城县| 克什克腾旗| 宜阳县| 新建县| 凉城县| 韩城市| 大丰市| 华宁县| 桦甸市| 镇原县| 龙海市| 讷河市| 万年县| 阜平县| 定边县| 汤原县| 和平县| 浦江县| 昌都县|