欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年04月12日 09:32:57   作者:拾階求上  
這篇文章主要介紹了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ù)是通過(guò)在父組件中引用子組件時(shí),在子組件標(biāo)簽設(shè)置傳輸數(shù)據(jù)的屬性;而子組件中通過(guò) this.props 接受傳過(guò)來(lái)的數(shù)據(jù);這樣就實(shí)現(xiàn)了父組件向子組件的數(shù)據(jù)傳輸。

1.1、父組件代碼

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)鬟^(guò)來(lái)的
        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;

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

關(guān)鍵代碼:

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

1.2、子組件代碼

import React from "react";
class Child extends React.Component{
    constructor(props){
        super(props);
        this.state={
            name:'Andy',
            age:31,
            msg:"來(lái)自子類的消息"
        }
    }
    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;

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

關(guān)鍵代碼:

<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ù),通過(guò)函數(shù)的參數(shù)的形式,傳輸給父組件。

2.1、父組件代碼

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

class App extends Component {
......
    callback=(msg,name,age)=>{
        // setState方法,修改msg的值,值是由child里面?zhèn)鬟^(guò)來(lái)的
        this.setState({msg});
        this.setState({name});
        this.setState({age});
    }
  render() {
    return (
      <div className="App">
        <Child callback={this.callback}></Child>
      </div>
    );
  }
}
export default App;

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

2.2、子組件代碼

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

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ù)(父組件傳輸過(guò)來(lái)的函數(shù));函數(shù)的實(shí)參就是子組件傳輸給父組件的數(shù)據(jù)。

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

相關(guān)文章

  • React+Electron快速創(chuàng)建并打包成桌面應(yīng)用的實(shí)例代碼

    React+Electron快速創(chuàng)建并打包成桌面應(yīng)用的實(shí)例代碼

    這篇文章主要介紹了React+Electron快速創(chuàng)建并打包成桌面應(yīng)用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • react實(shí)現(xiàn)阻止父容器滾動(dòng)

    react實(shí)現(xiàn)阻止父容器滾動(dòng)

    這篇文章主要介紹了react實(shí)現(xiàn)阻止父容器滾動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 深入解析React?Hooks?閉包陷阱

    深入解析React?Hooks?閉包陷阱

    這篇文章主要為大家介紹了React Hooks閉包陷阱的深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 一文詳解如何使用React監(jiān)聽網(wǎng)絡(luò)狀態(tài)

    一文詳解如何使用React監(jiān)聽網(wǎng)絡(luò)狀態(tài)

    在現(xiàn)代Web應(yīng)用程序中,網(wǎng)絡(luò)連接是至關(guān)重要的,通過(guò)監(jiān)聽網(wǎng)絡(luò)狀態(tài),我們可以為用戶提供更好的體驗(yàn),例如在斷網(wǎng)時(shí)顯示有關(guān)網(wǎng)絡(luò)狀態(tài)的信息,本文將介紹如何使用React監(jiān)聽網(wǎng)絡(luò)狀態(tài)的變化,并提供相應(yīng)的代碼示例
    2023-06-06
  • antd之RangePicker設(shè)置默認(rèn)值方式

    antd之RangePicker設(shè)置默認(rèn)值方式

    這篇文章主要介紹了antd之RangePicker設(shè)置默認(rèn)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • react實(shí)現(xiàn)antd線上主題動(dòng)態(tài)切換功能

    react實(shí)現(xiàn)antd線上主題動(dòng)態(tài)切換功能

    這篇文章主要介紹了react實(shí)現(xiàn)antd線上主題動(dòng)態(tài)切換功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • React Native實(shí)現(xiàn)簡(jiǎn)單的登錄功能(推薦)

    React Native實(shí)現(xiàn)簡(jiǎn)單的登錄功能(推薦)

    這篇文章主要介紹了React Native實(shí)現(xiàn)登錄功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • React 實(shí)現(xiàn)車牌鍵盤的示例代碼

    React 實(shí)現(xiàn)車牌鍵盤的示例代碼

    這篇文章主要介紹了React 實(shí)現(xiàn)車牌鍵盤的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • React自定義hooks同步獲取useState的最新狀態(tài)值方式

    React自定義hooks同步獲取useState的最新狀態(tài)值方式

    這篇文章主要介紹了React自定義hooks同步獲取useState的最新狀態(tài)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • ReactJS中使用TypeScript的方法

    ReactJS中使用TypeScript的方法

    TypeScript 實(shí)際上就是具有強(qiáng)類型的 JavaScript,可以對(duì)類型進(jìn)行強(qiáng)校驗(yàn),好處是代碼閱讀起來(lái)比較清晰,代碼類型出現(xiàn)問(wèn)題時(shí),在編譯時(shí)就可以發(fā)現(xiàn),而不會(huì)在運(yùn)行時(shí)由于類型的錯(cuò)誤而導(dǎo)致報(bào)錯(cuò),這篇文章主要介紹了ReactJS中使用TypeScript的方法,需要的朋友可以參考下
    2024-04-04

最新評(píng)論