React 中的 useContext使用方法
useContext就是上下文
什么是上下文呢?
全局變量就是全局的上下文,全局都可以訪(fǎng)問(wèn)到它;上下文就是你運(yùn)行一段代碼,所要知道的所有變量
useContext使用的方法:
1.要先創(chuàng)建createContex
使用createContext創(chuàng)建并初始化
const C = createContext(null);
2.Provider 指定使用的范圍
在圈定的范圍內(nèi),傳入讀操作和寫(xiě)操作對(duì)象,然后可以使用上下文
<C.Provider value={{n,setN}}> 這是爺爺 <Baba></Baba> </C.Provider>
3.最后使用useContext
使用useContext接受上下文,因?yàn)閭魅氲氖菍?duì)象,則接受的也應(yīng)該是對(duì)象
const {n,setN} = useContext(C);
案例:在孫子組件中使用爺爺組件中定義的變量n,并且進(jìn)行+1操作
import React, { createContext, useContext, useReducer, useState } from 'react' import ReactDOM from 'react-dom' // 創(chuàng)造一個(gè)上下文 const C = createContext(null); function App(){ const [n,setN] = useState(0) return( // 指定上下文使用范圍,使用provider,并傳入讀數(shù)據(jù)和寫(xiě)入據(jù) <C.Provider value={{n,setN}}> 這是爺爺 <Baba></Baba> </C.Provider> ) } function Baba(){ return( <div> 這是爸爸 <Child></Child> </div> ) } function Child(){ // 使用上下文,因?yàn)閭魅氲氖菍?duì)象,則接受也應(yīng)該是對(duì)象 const {n,setN} = useContext(C) const add=()=>{ setN(n=>n+1) }; return( <div> 這是兒子:n:{n} <button onClick={add}>+1</button> </div> ) } ReactDOM.render(<App />,document.getElementById('root'));
使用useContext在改變一個(gè)數(shù)據(jù)時(shí),是通過(guò)自己逐級(jí)查找對(duì)比改變的數(shù)據(jù)然后渲染,而不是通過(guò)數(shù)據(jù)響應(yīng)式來(lái)監(jiān)控變量的。
也就是說(shuō)在點(diǎn)擊+1操作后,React開(kāi)始從function App開(kāi)始執(zhí)行代碼了
到此這篇關(guān)于React 的 useContext 的使用的文章就介紹到這了,更多相關(guān)React useContext 使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決React報(bào)錯(cuò)`value` prop on `input` should&
這篇文章主要為大家介紹了React報(bào)錯(cuò)`value` prop on `input` should not be null解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12react?hooks?UI與業(yè)務(wù)邏輯分離必要性技術(shù)方案
這篇文章主要為大家介紹了react?hooks?UI與業(yè)務(wù)邏輯分離必要性技術(shù)方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11React項(xiàng)目中fetch實(shí)現(xiàn)跨域接收傳遞session的解決方案
這篇文章主要介紹了React項(xiàng)目中fetch實(shí)現(xiàn)跨域接收傳遞session的解決方案,本次項(xiàng)目使用了react框架,同時(shí)使用fetch取代ajax作為獲取接口數(shù)據(jù)的交互方法,下面就對(duì)這次問(wèn)題的解決做個(gè)總結(jié),需要的朋友可以參考下2022-04-04解決React報(bào)錯(cuò)Property 'X' does not 
這篇文章主要為大家介紹了解決React報(bào)錯(cuò)Property 'X' does not exist on type 'HTMLElement',有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12詳解React中的useMemo和useCallback的區(qū)別
React中的useMemo和useCallback是兩個(gè)重要的Hooks。常常被用于優(yōu)化組件的性能。雖然這兩個(gè)Hooks看起來(lái)很相似,但它們彼此之間還是有很大的區(qū)別的,隨著小編一起來(lái)學(xué)習(xí)吧2023-04-04react antd實(shí)現(xiàn)動(dòng)態(tài)增減表單
antd是react流行的ui框架庫(kù),本文主要介紹了react antd實(shí)現(xiàn)動(dòng)態(tài)增減表單,分享給大家,感興趣的小伙伴們可以參考一下2021-06-06