<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在參照子元件的時候傳遞,相當於一個屬性,例如:在子元件內通過porps.param獲取到這個param的值。
父元件向子元件傳值,通過props,將父元件的state傳遞給了子元件。
父元件程式碼片段:
constructor(props){ super(props) this.state={ message:"i am from parent" } } render(){ return( <Child txt={this.state.message}/> ) } }
子元件程式碼片段:
render(){ return( <p>{this.props.txt}</p> ) }
完整範例
建立父元件 index.js
import React from 'react'; import ReactDOM from 'react-dom'; import User from './User';//引入子元件 //定義資料 const person = { name: 'Tom', age:20 } ReactDOM.render( //渲染子元件,並向子元件傳遞name,age屬性 <User name={person.name} age={person.age}></User> , document.getElementById('root'));
建立子元件 User.js
import React from 'react'; class User extends React.Component{ render(){ return ( // 使用props屬性接收父元件傳遞過來的引數 <div>{this.props.name},{this.props.age}</div> ); } } export default User;
在父元件中可以使用展開運運算元 ... 傳遞物件
index.js檔案
ReactDOM.render( //渲染子元件,並向子元件傳遞name,age屬性 <User {...person}></User> , document.getElementById('root'));
User.js檔案
render(){ return ( // 使用props屬性接收父元件傳遞過來的引數 <div>{this.props.name},{this.props.age}</div> ); }
子元件通過呼叫父元件傳遞到子元件的方法向父元件傳遞訊息的。
完整案例
子元件 Son.js 檔案程式碼範例:
import React from 'react'; class Son extends React.Component { //構造方法 constructor(){ super(); this.state = { inputValue:'' } } //按鈕點選事件 handleClick(){ //通過props屬性獲取父元件的getdata方法,並將this.state值傳遞過去 this.props.getdata(this.state.inputValue); } //輸入框事件,用於為this.state賦值 handleChange(e){ this.setState({ inputValue: e.target.value }); } render(){ return ( <React.Fragment> <input onChange={this.handleChange.bind(this)}></input> <button onClick={this.handleClick.bind(this)}>點選獲取資料</button> </React.Fragment> ); } } export default Son;
父元件 Parent.js 檔案程式碼範例:
import React from 'react'; import Son from './Son'; class Parent extends React.Component { //構造方法 constructor(){ super(); this.state = { mess: '' //初始化mess屬性 } } //用於接收子元件的傳值方法,引數為子元件傳遞過來的值 getDatas(msg){ //把子元件傳遞過來的值賦給this.state中的屬性 this.setState({ mess: msg }); } render(){ return ( <React.Fragment> {/* 渲染子元件,設定子元件存取的方法, getdata屬性名為子元件中呼叫的父元件方法名 */} <Son getdata={this.getDatas.bind(this)}></Son> <div>展示資料:{this.state.mess}</div> </React.Fragment> ); } } export default Parent;
入口檔案 index.js範例程式碼:
import React from 'react'; import ReactDOM from 'react-dom'; import Parent from './Parent'; ReactDOM.render(<Parent></Parent>, document.getElementById('root'));
兄弟元件之間的傳值,是通過父元件做的中轉 ,流程為:
元件A -- 傳值 --> 父元件 -- 傳值 --> 元件B
程式碼範例:
建立 Acls.js 元件,用於提供資料
import React from 'react'; class Acls extends React.Component { //按鈕點選事件,向父元件Pcls.js傳值 handleClick(){ this.props.data("hello...React..."); } render(){ return ( <button onClick={this.handleClick.bind(this)}>Acls元件中獲取資料</button> ); } } export default Acls;
建立父元件 Pcls.js 用於中轉資料
import React from 'react'; import Acls from './Acls'; import Bcls from './Bcls'; class Pcls extends React.Component { //建構函式 constructor(){ super(); this.state = { mess: '' } } //向子元件Acls.js提供的傳值方法,引數為獲取的子元件傳過來的值 getDatas(data){ this.setState({ mess: data }); } render(){ return ( <React.Fragment> Pcls元件中顯示按鈕並傳值: <Acls data={this.getDatas.bind(this)}></Acls> <Bcls mess={this.state.mess}></Bcls> </React.Fragment> ); } } export default Pcls;
建立子元件 Bcls.js 用於展示從 Acls.js 元件中生成的資料
import React from 'react'; class Bcls extends React.Component { render(){ return ( <div>在Bcls元件中展示資料:{this.props.mess}</div> ); } } export default Bcls;
到此這篇關於React父子元件傳值(元件通訊)的實現方法的文章就介紹到這了,更多相關React父子元件傳值內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45