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

React?實(shí)現(xiàn)爺孫組件間相互通信

 更新時(shí)間:2022年08月08日 14:56:05   作者:vs心動(dòng)???????  
這篇文章主要介紹了React實(shí)現(xiàn)爺孫組件間相互通信,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下

前言

最近在學(xué)習(xí)React,給大家總結(jié)下跨組件通信中,爺孫組件之間怎么相互通信。簡(jiǎn)單明了上代碼直接一把梭,不多解釋。

爺孫組件間通信

案例如下:

代碼:

//跨組件通信
import React, { Component } from 'react'
//創(chuàng)建context 給初始值
const UserMessage = React.createContext({
    nickName: 'yyy',
    level: 1
})

export default class TextSingal extends Component {
    constructor(props) {
        super(props)
        this.state = {
            nickName: 'kkk',
            level: 99,
            name: 'ppp',
            age: 9999
        }
    }
    render() {
        const { name, age } = this.state
        return (
            <div>
                <h2>爺爺組件</h2>
                <h3>name:{name}</h3>
                <h3>age:{age}</h3>
                {/* 改變數(shù)據(jù)孫組件也更新 */}
                <button onClick={() => this.handelClick()}>updated</button>
                {/* 傳入state對(duì)象和foo回調(diào)函數(shù) */}
                {/* foo函數(shù)用于孫組件和爺組件通信 */}
                <UserMessage.Provider value={{ ...this.state, foo: (name, age) => this.updateDatas(name, age) }}>
                    <Father />
                </UserMessage.Provider>

            </div>
        )
    }
    handelClick() {
        this.setState({
            nickName: '虎威神',
            level: 9999
        })
    }
    updateDatas(name, age) {
        this.setState({
            name,
            age
        })
    }
}

class Father extends Component {
    render() {
        return (
            <div>
                <h2>爸爸組件</h2>
                <Son />
            </div>
        )
    }
}
class Son extends Component {
    render() {
        // 解構(gòu)
        const { nickName, level, foo } = this.context
        return (
            <div>
                <h2>兒子組件</h2>
                <h3>nickname:{nickName}</h3>
                <h3>level:{level}</h3>
                {/* 下面兩種調(diào)用方式都可以 */}
                {/* 改變爺組件的數(shù)據(jù) */}
                <button onClick={() => this.handelClick()}>updated</button>
                <button onClick={() => foo('牛霸天', 18)}>updated</button>
            </div>
        )
    }
    handelClick() {
        this.context.foo('牛霸天', 18)
    }
}
// 接受爺組件傳遞的值
Son.contextType = UserMessage

爺給孫組件通信就不多說了,直接創(chuàng)建context傳入默認(rèn)對(duì)象,然后在爺組件用該創(chuàng)建名創(chuàng)建對(duì)象包裹父組件,通過value傳值過去,然后在孫組件Son.contextType 進(jìn)行接收,在this.context取值即可。

孫給爺傳值則是和子跟父?jìng)髦档牡览硪粯樱ㄟ^傳入回調(diào)函數(shù)來進(jìn)行修改。

到此這篇關(guān)于React 四線爺孫組件間相互通信的文章就介紹到這了,更多相關(guān)React組件通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React18中的useDeferredValue示例詳解

    React18中的useDeferredValue示例詳解

    這篇文章主要介紹了React18中的useDeferredValue的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • React?Hooks--useEffect代替常用生命周期函數(shù)方式

    React?Hooks--useEffect代替常用生命周期函數(shù)方式

    這篇文章主要介紹了React?Hooks--useEffect代替常用生命周期函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React中g(shù)etDefaultProps的使用小結(jié)

    React中g(shù)etDefaultProps的使用小結(jié)

    React中的getDefaultProps功能允許開發(fā)者為類組件定義默認(rèn)屬性,提高組件的靈活性和容錯(cuò)性,本文介紹了getDefaultProps的作用、語法以及最佳實(shí)踐,并探討了其他替代方案,如函數(shù)組件中的默認(rèn)參數(shù)、高階組件和ContextAPI等,理解這些概念有助于提升代碼的可維護(hù)性和用戶體驗(yàn)
    2024-09-09
  • React中的Context應(yīng)用場(chǎng)景分析

    React中的Context應(yīng)用場(chǎng)景分析

    這篇文章主要介紹了React中的Context應(yīng)用場(chǎng)景分析,Context 提供了一種在組件之間共享數(shù)據(jù)的方式,而不必顯式地通過組件樹的逐層傳遞 props,通過實(shí)例代碼給大家介紹使用步驟,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • VSCode搭建React Native環(huán)境

    VSCode搭建React Native環(huán)境

    這篇文章主要介紹了VSCode搭建React Native環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • React中使用axios發(fā)送請(qǐng)求的幾種常用方法

    React中使用axios發(fā)送請(qǐng)求的幾種常用方法

    本文主要介紹了React中使用axios發(fā)送請(qǐng)求的幾種常用方法,主要介紹了get和post請(qǐng)求,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-08-08
  • react-pdf實(shí)現(xiàn)將pdf文件轉(zhuǎn)為圖片,用于頁(yè)面展示

    react-pdf實(shí)現(xiàn)將pdf文件轉(zhuǎn)為圖片,用于頁(yè)面展示

    這篇文章主要介紹了react-pdf實(shí)現(xiàn)將pdf文件轉(zhuǎn)為圖片,用于頁(yè)面展示問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 在React框架中實(shí)現(xiàn)一些AngularJS中ng指令的例子

    在React框架中實(shí)現(xiàn)一些AngularJS中ng指令的例子

    這篇文章主要介紹了在JavaScript的React框架中實(shí)現(xiàn)一些AngularJS指令的例子,React使用Virtual DOM因而與普通的js框架有些不同,需要的朋友可以參考下
    2016-03-03
  • React自定義hook的方法

    React自定義hook的方法

    Hook是 React 16.8 的新增特性。它通常與函數(shù)式組件同時(shí)使用??梢允购瘮?shù)式組件在不編寫 class 的情況下,可以擁有class組件的狀態(tài)、生命周期、引用等功能,這篇文章主要介紹了React自定義hook的相關(guān)知識(shí),需要的朋友可以參考下
    2022-06-06
  • React狀態(tài)更新的優(yōu)先級(jí)機(jī)制源碼解析

    React狀態(tài)更新的優(yōu)先級(jí)機(jī)制源碼解析

    這篇文章主要為大家介紹了React狀態(tài)更新的優(yōu)先級(jí)機(jī)制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論

洛南县| 雷州市| 聂拉木县| 嘉兴市| 三台县| 梁平县| 平江县| 怀化市| 福州市| 运城市| 新竹县| 高碑店市| 安福县| 逊克县| 涿鹿县| 平罗县| 谢通门县| 吉隆县| 诸城市| 井陉县| 田阳县| 汤阴县| 雷州市| 时尚| 景宁| 陆良县| 浮梁县| 五大连池市| 庆安县| 慈利县| 专栏| 泰宁县| 南华县| 方山县| 洪湖市| 新巴尔虎左旗| 界首市| 策勒县| 南漳县| 康马县| 延边|