react --- 隔代傳遞參數的三種方式

組件跨層級通信 - Context

  • 上下文提供一種不需要每層設置props就能跨多級組件傳遞數據的方式

方式1

  • Provider提供值
  • Consumer來消費傳遞的值
import React from 'react';// 創建一個上下文
const Mycontext = React.createContext();
const { Provider, Consumer } = MyContext;function Child(prop) {return <div>Child: {prop.foo} </div>
}export default function ContextTest() {return (<div><Provider value ={ {foo: 'bar'} }><Consumer>// 將value的孩子展開{value => <Child {...child} />}</Consumer></Provider></div>)
}

方式2

  • 使用hook來消費(useContext)
import React, {useContext} from 'react';
const { Provider } = MyContext;const MyContext = React.createContext();// 使用hook消費
function Child2() {// 使用useContext來獲取傳遞過來的參數,放在ctx里面const ctx = useContext(MyContext);return <div>Child2: {ctx.foo} </div>
}export default function ContextTest() {return (<div><Provider value={{foo: 'bar'}}><Child2></Child2></Provider></div>)
}

方式3

  • 使用class指定靜態contextType
import React from 'react'
const MyContext = React.createContext();class Child3 extends React.Component{static contextType = MyContext;render(){return <div>Child3: {this.context.foo}</div>}
}export default function ContextTest() {return (<div><Provider value={{foo: 'bar'}}><Child3></Child3></Provider></div>)
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250568.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250568.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250568.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

bzoj 4898: [Apio2017]商旅【Floyd+分數規劃+二分】

其實并不會分數規劃 因為要最大化 ans總收益/總路程 &#xff0c;所以考慮二分答案&#xff0c;找到一條 ans<總收益/總路程 的回路。先預處理出d(i,j)為(i,j)最短路&#xff0c;w(i,j)為在i買某個物品在j賣出的最大收益&#xff08;最小為0&#xff09;。把式子變一下&…

幾種鏈表的優缺點比較

轉載于:https://www.cnblogs.com/FengZeng666/p/9425117.html

node --- 模擬express實現一個簡單的服務器

目標 使用express實現一個監聽3000端口的http服務如下 const express require(express); const app express();app.get(/, (req, res) > {res.end(Hello Express); }) app.get(/users,(req, res)>{res.end(JSON.stringify({name: abc})) }) app.listen(3000, ()>{…

node --- [跨域] 預檢請求

簡單請求 若滿足所有下述條件&#xff0c;則該請求可視為“簡單請求”&#xff1a; 使用下列方法之一&#xff1a; GET HEAD POST Content-Type: (僅當POST方法的Content-Type值等于下列之一才算做簡單需求) text/plain multipart/form-data application/x-www-form-ur…

Java 的異常

Java 的異常 異常&#xff1a;在Java語言中&#xff0c;將程序執行中發生的不正常情況稱為“異常”。(開發過程中的語法錯誤和邏輯錯誤不是異常)Java程序在執行過程中所發生的異常事件可分為兩類&#xff1a; Error: Java虛擬機無法解決的嚴重問題。如&#xff1a;JVM系統內部…

docker --- 將已有的項目發布到云端

[運行在win10] Dockerfile Docker根據該文件生成image文件 FROM node:8.4 COPY . /app WORKDIR /app RUN ["npm", "install"] EXPOSE 3000/tcp根據Dockerfile生成image 注意末尾有個.(英文的點)代表當前目錄 docker image build -t koa-demo:0.0.1 .查…

傳遞動態內存

一、內存分配分類 1.從靜態存儲區域分配。內存在程序編譯的時候就已經分配好&#xff0c;這塊內存在程序的整個運行期間都存在。例如全局變量&#xff0c;static 變量。 2.在棧上創建。在執行函數時&#xff0c;函數內局部變量的存儲單元都可以在棧上創建&#xff0c;函數執行結…

linux --- 基礎指令

基礎命令 1、ls(list) 用法1: # ls 含義: 列出當前工作目錄下所有的 文件/文件夾 的名稱 用法2: # ls 路徑 含義: 列出指定路徑目錄下所有的 文件/文件夾 的名稱 用法3: # ls 選項 路徑 含義: 以指定的格式來顯示指定目錄下文件夾的名稱 栗子: # ls -l 路徑 -->> 表…

驗證碼功能

驗證碼功能 1.安裝captcha插件 (dj_login) D:\dj\dj_login>pip install django-simple-captcha Collecting django-simple-captchaUsing cached https://files.pythonhosted.org/packages/d7/f4/ea95b04ed3abc7bf225716f17e35c5a185f6100db4d7541a 46696ce40351/django-simp…

Java 類的成員

Java 類的成員 初始化塊 1、一個類中初始化塊若有修飾符&#xff0c;則只能被static修飾&#xff0c;稱為靜態代碼塊(staticblock )&#xff0c;當類被載入時&#xff0c;類屬性的聲明和靜態代碼塊先后順序被執行&#xff0c;且只被執行一次。 2、static塊通常用于初始化sta…

linux --- 進階指令

進階指令(重點) 1、df 指令 作用: 查看磁盤空間語法: # df -h 注: -h:以較高可讀性的方式展示出來 2、free 指令 作用: 查看內存使用情況語法: # free -m 注: -m:以M的單位顯示內存情況 -/ buffers/cache: free 代表真實可用的內存為 486 Mb Swap: 表示,臨時將硬盤當作內存…

MFC對話框播放8位512*512的像素數據

關鍵代碼&#xff1a; UINT playAllFrame(LPVOID lpParameter){//showOneFrame(0,TRUE);CMFCDialogDlg *mydlg (CMFCDialogDlg *) lpParameter;//獲取原始數據文件CString selectPath;mydlg->GetDlgItemTextW(IDC_MFCEDITBROWSE,selectPath);string StrSelectPath(CW2A(sel…

java 集合 CopyOnWriteArrayList

CopyOnWriteArrayList 也是實現List接口他是在concurrent 包里面&#xff0c;所以他是線程安全的&#xff0c;其他的基本和ArrayList很想。他線程安全是用ReentrantLock 實現的&#xff0c;他內部有一個ReentrantLock對象&#xff0c;然后在增刪改的時候都操作這個鎖對象&#…

Java 類的特性1

Java 類的特性1 繼承 1.為什么要有繼承&#xff1f; 多個類中存在相同屬性和行為時&#xff0c;將這些內容抽取到單獨一個類中&#xff0c;那么多個類無需再定義這些屬性和行為&#xff0c;只要繼承那個類即可。 2.此處的多個類稱為子類&#xff0c;單獨的這個類稱為父類&a…

linux --- 高級指令

高級指令 1、hostname 指令 作用: 操作(讀取|操作)服務器的主機名語法1: # hostname (輸出完整的主機名) 語法2: # hostname -f (輸出當前主機中的FQDN) FQDN&#xff1a;(Fully Qualified Domain Name)全限定域名&#xff1a;同時帶有主機名和域名的名稱。 2、id 指令 作…

Linux修改密碼后不能SSH遠程登錄了

1、把以下文件的屬性改成755&#xff0c;然后再修改密碼&#xff1a;/etc/passwd ,/etc/group , /etc/shadow , /etc/gshadow2、如果文件的屬性無法更改&#xff0c;請用lsattr 查看文件是否有 i 屬性&#xff0c;如有&#xff0c;則用chattr取消之&#xff0c;如&#xff1a;l…

Java 類的特性2

Java 類的特性2 類屬性、類方法的設計思想 類屬性作為該類各個對象之間共享的變量。在設計類時,分析哪些類屬性不因對象的不同而改變&#xff0c;將這些屬性設置為類屬性。相應的方法設置為類方法。如果方法與調用者無關&#xff0c;則這樣的方法通常被聲明為類方法&#xff…

docker --- 鏡像、容器

Docker使用國內的源 windows下使用 "everything"軟件 查找 daemon.json修改為如下: {"registry_mirrors": ["https://docker.mirrors.ustc.edu.cn"] }查看images(鏡像) docker images注: 看見的鏡像是已經下載好的,因此在沒有網絡的情況下也可…

Java 面向對象

Java 面向對象 面向對象的三大特征 封裝 (Encapsulation)繼承 (Inheritance)多態 (Polymorphism) 類的訪問機制&#xff1a; 在一個類中的訪問機制&#xff1a;類中的方法可以直接訪問類中的成員變量。&#xff08;例外&#xff1a;static方法訪問非static&#xff0c;編譯…

交換機老化測試和性能測試方法收集

說明&#xff1a;這是一個做交換機朋友給的一個方法&#xff0c;只做老化測試&#xff0c;不做壓力滿載測試。 我所理解的&#xff1a;老化測試是指在一定的時間內工作負荷之后&#xff0c;看有沒有故障和不穩定的現象出現。 而對于壓力測試&#xff0c;需要通過專業的測試設備…