成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

React 數據流管理:組件之間數據是如何傳遞的?

開發 前端
截至到目前,我們已經掌握了組件的概念、組件的傳值、以及組件狀態的相關內容。有興趣的寶子可以翻看俺之前發布的內容,筆芯。

[[422977]]

本文轉載自微信公眾號「勾勾的前端世界」,作者西嶺 。轉載本文請聯系勾勾的前端世界公眾號。

截至到目前,我們已經掌握了組件的概念、組件的傳值、以及組件狀態的相關內容。有興趣的寶子可以翻看俺之前發布的內容,筆芯。

你應該發現了,我們學習 React ,除了環境搭建和不多的 JSX 語法外,極大的篇幅都在學習 React 中的數據流管理。

但是,我們在前面學習組件傳值時,一直都是將值從父級組件傳入子級組件中,從來沒有將子級組件的值傳入到父級組件,也沒有在多個兄弟組件間傳值。

而根據單向數據流的內容推測,我們也不敢確定數據是否可以從子組件傳入父級組件。

為什么沒有在之前就說呢?因為我們的基礎知識掌握的還不夠,現在學完組件狀態,就可以了,那到底應該怎么做呢?

組件數據傳遞

子組件向父組件傳值

我們先來看子級組件如何向父級組件傳遞數據:其本質上就是使用回調函數。

具體怎么做呢?

父級組件引入子級組件后,在 JSX 中依然使用 Props 的方式,將提前寫好的父級組件的函數,傳入子級組件,在子級組件中使用 this.props 接收傳入的函數并調用,在函數的調用中,將需要出入父級組件的值,傳入函數調用的實參。

父組件:

  1. import React, { Component } from 'react' 
  2. import States from './States' 
  3.  
  4. export class App extends Component { 
  5.   state = { 
  6.     name:'lisi' 
  7.   } 
  8.  
  9.   callBack = (req)=>{ 
  10.     this.setState({name:req}) 
  11.   } 
  12.  
  13.   render() { 
  14.     return ( 
  15.       <div> 
  16.         <h1>APP</h1> 
  17.         <p>{this.state.name}</p> 
  18.         {/* 將父級組件中的函數,以 Props 的方式傳入子級組件 */} 
  19.         {/* 子級組件調用函數,以回調函數的方式將子組件的值傳回給父級組件 */} 
  20.         <States fun={this.callBack} /> 
  21.       </div> 
  22.     ) 
  23.   } 
  24.  
  25. export default App 

子組件:

  1. import React, { Component } from 'react' 
  2.  
  3. export class States extends Component { 
  4.   render() { 
  5.     return ( 
  6.       <div> 
  7.         {/* 子組件使用 Props 接收父級組件傳入的函數并調用 */} 
  8.         {/* 將需要傳入父級組件的值,以實參的方式傳入到函數調用 */} 
  9.         <button onClick={()=>{this.props.fun('xliling')}}>點我</button> 
  10.       </div> 
  11.     ) 
  12.   } 
  13.  
  14. export default States 

父級組件向子級組件通信,我們使用的是 Props 屬性,子級組件向父級組件通信則是結合了 Props 和回調函數進行實現的,集合這兩點,我們就可以實現兄弟組件的通信了。

兄弟組件通信

兄弟組件的通信原理其實也很簡單,就是使用回調函數的方式,先將數據傳入父級組件,再由父級組件使用 Props 的方式將數據傳入子級組件,如下圖所示:

而具體代碼的實現,并沒有什么新的知識點內容,無非就是兩者結合一下而已:

我們在父級組件中,引入子級組件的內容,然后將函數傳入數據來源的子級組件,同樣使用 Props 再將數據傳入另一個組件中。

父級組件的代碼如下:

  1. import React, { Component } from 'react' 
  2.  
  3. import States from './States' 
  4. import Brother from './Brother' 
  5.  
  6. export class App extends Component { 
  7.   state = { 
  8.     name:'lisi' 
  9.   } 
  10.  
  11.   callBack = (req)=>{ 
  12.     this.setState({name:req}) 
  13.   } 
  14.  
  15.   render() { 
  16.     return ( 
  17.       <div> 
  18.         <h1>APP</h1> 
  19.         <p>{this.state.name}</p> 
  20.         <States fun={this.callBack} /> 
  21.         <Brother fromApp={this.state.name}></Brother> 
  22.       </div> 
  23.     ) 
  24.   } 
  25.  
  26. export default App 

接著我們看數據來源組件中,通過 Props 獲取回調函數,調用并傳入數據:

  1. import React, { Component } from 'react' 
  2.  
  3. export class States extends Component { 
  4.   render() { 
  5.     return ( 
  6.       <div> 
  7.         <button onClick={()=>{this.props.fun('xliling')}}>點我</button> 
  8.       </div> 
  9.     ) 
  10.   } 
  11.  
  12. export default States 

然后再接收數據的子組件中,獲取數據:

  1. import React, { Component } from 'react' 
  2.  
  3. export class Brother extends Component { 
  4.   render() { 
  5.     return ( 
  6.       <div> 
  7.         <h2>Brother </h2> 
  8.         <p>{this.props.fromApp}</p> 
  9.       </div> 
  10.     ) 
  11.   } 
  12.  
  13. export default Brother 

總結

子組件向父級組件傳值就是簡單的回調函數,并沒有復雜的手法。,而利用回調函數和 Props 也可以輕松的實現兄弟組件間的數據傳遞,至此,我們利用 Props 完成了對 React 數據流管理的所有內容的學習。

 

而之前提到的關于 JSX 交互部分,用戶的頁面操作,都是由表單承接的。那么接下來的表單的處理就是重點了,下周再更,嘻嘻(●'?'●)

 

責任編輯:武曉燕 來源: 勾勾的前端世界
相關推薦

2013-12-11 09:47:35

NetflixAWSIaaS

2017-07-11 18:00:21

vue.js數據組件

2013-06-19 09:49:34

云計算大數據Hadoop

2017-12-12 10:50:54

數據中心機柜氣流

2021-03-05 15:55:10

鴻蒙HarmonyOS應用開發

2011-07-13 09:31:48

ASP.NET數據傳遞

2011-07-28 14:49:40

2017-11-01 14:29:38

2023-07-28 13:55:40

便捷選項組件

2009-12-16 09:16:53

ASP.NET頁面間數

2021-09-07 18:40:55

單向數據流數據

2019-12-19 14:38:08

Flink SQL數據流Join

2021-07-01 10:13:51

緩存數據存儲服務化架構

2016-09-14 21:44:50

JavascriptreactJsjsx

2016-11-25 13:50:15

React組件SFC

2022-05-13 08:48:50

React組件TypeScrip

2022-11-14 09:13:16

2023-12-21 10:26:30

??Prettier

2011-12-14 15:57:13

javanio

2023-04-06 09:41:00

React 組件重渲染
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九热视频这里只有精品 | 午夜影院污 | 天天天天操 | 亚洲午夜av久久乱码 | 精品免费看| 久久精品综合网 | 国产精品国产精品国产专区不片 | 欧美一区二区在线观看 | 国产高清一区二区三区 | 日韩一区二区视频 | 玖玖免费 | 精品福利一区 | 久久久tv| 一级一级毛片免费看 | 在线免费看毛片 | 颜色网站在线观看 | 国产精品久久久久久久久久不蜜臀 | 精品一区二区三区免费视频 | 毛片a级毛片免费播放100 | 国产精品99久久久久久宅男 | 国产精品综合 | 欧美成人精品在线 | 国产资源在线视频 | 国产传媒毛片精品视频第一次 | 韩国av一区二区 | 成人精品在线 | 国产视频久久 | 日韩精品久久一区二区三区 | 免费一区| 国产精品久久久久久吹潮 | 日韩欧美在线一区 | 影视一区| 亚洲二区在线观看 | 亚洲精品一区在线观看 | 日本精品一区二区 | 久久精品欧美一区二区三区麻豆 | av天天干| 日韩成人在线视频 | 天天干天天谢 | 欧美视频三区 | 亚洲精品国产a久久久久久 午夜影院网站 |