一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - React - 詳解React 父組件和子組件的數(shù)據(jù)傳輸

詳解React 父組件和子組件的數(shù)據(jù)傳輸

2022-02-28 16:16拾階求上 React

這篇文章主要介紹了React 父組件和子組件的數(shù)據(jù)傳輸?shù)南嚓P(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下

在學(xué)習(xí) React 框架組件間數(shù)據(jù)傳輸知識(shí)點(diǎn)前,我們需要先明確幾點(diǎn)使用原則。

  1. React的組件間通訊是單向的。數(shù)據(jù)必須是由父級(jí)傳到子級(jí)或者子級(jí)傳遞給父級(jí)層層傳遞。
  2. 如果要給兄弟級(jí)的組件傳遞數(shù)據(jù),那么就要先傳遞給公共的父級(jí)而后在傳遞給你要傳遞到的組件位置。
  3. 這種非父子關(guān)系的組件間傳遞數(shù)據(jù),不推薦使用這種層層傳遞的方式;而是選擇使用維護(hù)全局狀態(tài)功能模塊(Redux)

一、父組件向子組件傳遞數(shù)據(jù)

父組件向子組件傳遞數(shù)據(jù)是通過在父組件中引用子組件時(shí),在子組件標(biāo)簽設(shè)置傳輸數(shù)據(jù)的屬性;而子組件中通過 this.props 接受傳過來的數(shù)據(jù);這樣就實(shí)現(xiàn)了父組件向子組件的數(shù)據(jù)傳輸。

1.1、父組件代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import React, { Component } from 'react';
import './App.css';
import Child from './child'
class App extends Component {
    constructor(props){
        super(props);
        this.state={
            msg:'父類的消息',
            name:'John',
            age:99
        }
    }
    callback=(msg,name,age)=>{
        // setState方法,修改msg的值,值是由child里面?zhèn)鬟^來的
        this.setState({msg});
        this.setState({name});
        this.setState({age});
    }
  render() {
    return (
      <div className="App">
        <p> Message: {this.state.msg}</p>
        <Child callback={this.callback} age={this.state.age}
name={this.state.name}></Child>
      </div>
    );
  }
}
export default App;

代碼說明:父組件在使用子組件(Child)的過程中,對(duì)子組件傳輸了兩個(gè)屬性(age和name)和一個(gè)方法(callback 先不考慮)。

關(guān)鍵代碼:

?
1
<Child name={this.state.name} age={this.state.age}></Child>

1.2、子組件代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import React from "react";
class Child extends React.Component{
    constructor(props){
        super(props);
        this.state={
            name:'Andy',
            age:31,
            msg:"來自子類的消息"
        }
    }
    change=()=>{
        this.props.callback(this.state.msg,this.state.name,this.state.age);
    }
    render(){
        return(
            <div>
                <div>{this.props.name}</div>
                <div>{this.props.age}</div>
                <button onClick={this.change}>點(diǎn)擊</button>
            </div>
        )
    }
}
export default Child;

代碼說明:子組件中在 render 中直接使用 this.props 接受父組件傳輸?shù)臄?shù)據(jù),并直接使用。不推薦子組件將接受到的數(shù)據(jù),再使用this.setSate 方式處理。

關(guān)鍵代碼:

?
1
2
<div>{this.props.name}</div>
<div>{this.props.age}</div>

二、子組件向父組件傳輸數(shù)據(jù)

React 框架中子組件向父組件傳輸數(shù)據(jù),要依賴于父組件向子組件傳輸數(shù)據(jù)。實(shí)際上就是父組件將自己作用域的函數(shù)傳輸給子組件;子組件調(diào)用該函數(shù),并將要傳輸?shù)臄?shù)據(jù),通過函數(shù)的參數(shù)的形式,傳輸給父組件。

2.1、父組件代碼

上面的代碼示例中,父組件中定義了函數(shù),并將這個(gè)函數(shù)傳輸給了子組件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class App extends Component {
......
    callback=(msg,name,age)=>{
        // setState方法,修改msg的值,值是由child里面?zhèn)鬟^來的
        this.setState({msg});
        this.setState({name});
        this.setState({age});
    }
  render() {
    return (
      <div className="App">
        <Child callback={this.callback}></Child>
      </div>
    );
  }
}
export default App;

父組件將自己作用域的函數(shù)傳遞給子組件,子組件在通過 this.props 調(diào)用此函數(shù)的過程中,通過參數(shù)的方式將數(shù)據(jù)傳輸?shù)浇M組件中。
這里父組件有三個(gè)形參:msg,name,age;子組件將數(shù)據(jù)傳輸過來后,父組件會(huì)將其使用 this.setState 方式處理。

2.2、子組件代碼

子組件通過使用 this.props 接受到父組件傳輸過來的函數(shù);并調(diào)用此函數(shù)通過參數(shù)的方法,傳輸數(shù)據(jù)給父組件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Child extends React.Component{
......
    change=()=>{
        this.props.callback(this.state.msg,this.state.name,this.state.age);
    }
    render(){
        return(
            <div>
                <button onClick={this.change}>點(diǎn)擊</button>
            </div>
        )
    }
}
export default Child;

子組件中創(chuàng)建了一個(gè)方法 change(),此方法和點(diǎn)擊事件 onClick 綁定;change() 方法中會(huì)調(diào)用 this.props.callback() 函數(shù)(父組件傳輸過來的函數(shù));函數(shù)的實(shí)參就是子組件傳輸給父組件的數(shù)據(jù)。

以上就是詳解React 父組件和子組件的數(shù)據(jù)傳輸?shù)脑敿?xì)內(nèi)容,更多關(guān)于React 父組件和子組件的數(shù)據(jù)傳輸?shù)馁Y料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://cn-blogs.cn/archives/9701.html

延伸 · 閱讀

精彩推薦
  • React淺談React Router關(guān)于history的那些事

    淺談React Router關(guān)于history的那些事

    這篇文章主要介紹了淺談React Router關(guān)于history的那些事,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們...

    這是上帝的杰作11952022-02-23
  • ReactReact.cloneElement的使用詳解

    React.cloneElement的使用詳解

    因?yàn)橐邮志S護(hù)一些項(xiàng)目,團(tuán)隊(duì)的技術(shù)棧最近從 vue 轉(zhuǎn)向 react ,作為一個(gè) react 新手,加上一向喜歡通過源碼來學(xué)習(xí)新的東西,就選擇了通過閱讀 antd 這個(gè)大...

    fullstackbb11202022-02-23
  • ReactReact useMemo和useCallback的使用場(chǎng)景

    React useMemo和useCallback的使用場(chǎng)景

    這篇文章主要介紹了React useMemo和useCallback的使用場(chǎng)景,幫助大家更好的理解和學(xué)習(xí)使用React框架,感興趣的朋友可以了解下...

    woking4932022-02-25
  • React深入理解React Native核心原理(React Native的橋接(Bridge)

    深入理解React Native核心原理(React Native的橋接(Bridge)

    這篇文章主要介紹了深入理解React Native核心原理(React Native的橋接(Bridge),本文重點(diǎn)給大家介紹React Native的基礎(chǔ)知識(shí)及實(shí)現(xiàn)原理,需要的朋友可以參考下...

    Gavell9562022-02-23
  • ReactReact html中使用react的兩種方式

    React html中使用react的兩種方式

    這篇文章主要介紹了React html中使用react的兩種方式,本文給大家提到了React pwa的配置代碼,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒...

    愚公搬代碼6292022-02-23
  • Reactreact中常見hook的使用方式

    react中常見hook的使用方式

    這篇文章主要介紹了react中常見hook的使用方式與區(qū)別,幫助大家更好的理解和學(xué)習(xí)使用react,感興趣的朋友可以了解下...

    一顆冰淇淋8812022-02-25
  • React從框架作者角度聊:React調(diào)度算法的迭代過程

    從框架作者角度聊:React調(diào)度算法的迭代過程

    React內(nèi)部最難理解的地方就是「調(diào)度算法」,不僅抽象、復(fù)雜,還重構(gòu)了一次。可以說,只有React團(tuán)隊(duì)自己才能完全理解這套算法。既然這樣,那本文嘗試從...

    魔術(shù)師卡頌8172022-01-10
  • Reactreact-native 實(shí)現(xiàn)購(gòu)物車滑動(dòng)刪除效果的示例代碼

    react-native 實(shí)現(xiàn)購(gòu)物車滑動(dòng)刪除效果的示例代碼

    這篇文章主要介紹了react-native 實(shí)現(xiàn)購(gòu)物車滑動(dòng)刪除效果的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,...

    程序猿tx3892021-12-31
主站蜘蛛池模板: 国产精品久久久精品视频 | 亚洲欧美日韩综合在线播放 | 男人天堂a | h片在线看 | 99热这里只有精品国产在热久久 | 男人捅女人漫画 | 日产欧产va高清 | jux629三浦理惠子在线播放 | 特黄特色大片免费视频播放 | 色婷婷综合缴情综六月 | 国产精品国产高清国产专区 | 国产午夜免费视频 | 呜嗯啊野战h呻吟男男双性 污小说在线阅读 | 美国美女hd18 | 精品久久成人免费第三区 | 国产精品videosse | 亚洲精品91 | 和肥岳在厨房激情 | 99久久精品免费看国产 | 黑人巨大vs北条麻妃在线 | 日韩在线视精品在亚洲 | 免费aⅴ在线 | 男人狂躁女人下面的视频免费 | 丝袜性爱 | 九九精品国产兔费观看久久 | 国产裸舞在线一区二区 | 黑人又大又硬又粗再深一点 | 无码中文字幕热热久久 | 欧美成人日韩 | 星空传媒在线视频 | 欧美四虎影院 | 国语刺激对白勾搭视频在线观看 | 视频一区二区三区在线 | 亚洲一级片在线播放 | 极品ts赵恩静和直男激战啪啪 | 四虎影院最新网址 | 30分钟的高清视频在线观看 | 日本精品久久久久中文字幕 1 | 华人在线视频 | 精品成人片深夜 | 艾秋果冻麻豆老狼 |