React組件間通訊傳值實(shí)現(xiàn)詳解
組件的props:
1.組件是封閉的,要接收外部數(shù)據(jù)應(yīng)該通過(guò)props來(lái)實(shí)現(xiàn)。
2.props的作用,接收傳遞給組件的數(shù)據(jù)。
3.傳遞數(shù)據(jù):給組件標(biāo)簽添加屬性
4.接收數(shù)據(jù):函數(shù)組件通過(guò)參數(shù)props接收數(shù)據(jù),類(lèi)組件通過(guò)this.props接收數(shù)據(jù)。
特點(diǎn):
1.可以給組件傳遞任意類(lèi)型的數(shù)據(jù)。
2.props是只讀對(duì)象,只能讀取屬性的值,不能修改對(duì)象。
3.使用類(lèi)組件時(shí),如果寫(xiě)了構(gòu)造函數(shù),應(yīng)該將props傳遞給super(),否則無(wú)法在構(gòu)造函數(shù)中獲取props。
父->子傳值
import React, { Component } from 'react' import ComSmall from './ComSmall' export default class ComBig extends Component { constructor(){ super() this.state={ info:"天冷了要加衣" } } render() { return ( <div>我是父組件 {/* 注冊(cè)子組件 ,通過(guò)msg傳遞給子組件*/} <ComSmall msg={this.state.info}></ComSmall> </div> ) } }
import React, { Component } from 'react' export default class ComSmall extends Component { constructor(props){ // 此處不傳props super(props) this.state={ } // console.log(this.props);此處打印的是undefined,傳遞后打印的是數(shù)據(jù) } render() { return ( <div>我是子組件 {/* 接收父組件傳值 */} {this.props.msg} </div> ) } }
子->父?jìng)髦?/p>
利用回調(diào)函數(shù),父組件提供回調(diào),子組件調(diào)用,將要傳遞的數(shù)據(jù)作為回調(diào)函數(shù)的參數(shù)。
import React, { Component } from 'react' export default class ComSmall extends Component { constructor(){ super() this.state={ msg:"給你買(mǎi)了一部手機(jī)" } } sendMsg(){ // 子組件調(diào)用父組件傳遞過(guò)來(lái)的回調(diào)函數(shù) this.props.getMsg(this.state.msg) } render() { return ( <div>我是子組件 <button onClick={()=>this.sendMsg()}>給父組件傳值</button> </div> ) } }
import React, { Component } from 'react' import ComSmall from './ComSmall' export default class ComBig extends Component { constructor(){ super() this.state={ data:"" } } getChindMsg=(val)=>{ // console.log("獲得子組件傳過(guò)來(lái)的值:",val); this.setState({ data:val }) } render() { return ( <div>我是父組件 <p>獲得子組件傳過(guò)來(lái)的值:{this.state.data}</p> {/* 將回調(diào)函數(shù)傳遞給子組件 */} <ComSmall getMsg={this.getChindMsg}></ComSmall> </div> ) } }
到此這篇關(guān)于React組件間通訊傳值實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)React組件通訊傳值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React?Fiber構(gòu)建completeWork源碼解析
這篇文章主要為大家介紹了React?Fiber構(gòu)建completeWork源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02淺談React的React.FC與React.Component的使用
本文主要介紹了React的React.FC與React.Component的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09React中事件綁定this指向三種方法的實(shí)現(xiàn)
這篇文章主要介紹了React中事件綁定this指向三種方法的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05React onClick/onChange傳參(bind綁定)問(wèn)題
這篇文章主要介紹了React onClick/onChange傳參(bind綁定)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02react 項(xiàng)目 中使用 Dllplugin 打包優(yōu)化技巧
在用 Webpack 打包的時(shí)候,對(duì)于一些不經(jīng)常更新的第三方庫(kù),比如 react,lodash,vue 我們希望能和自己的代碼分離開(kāi),這篇文章主要介紹了react 項(xiàng)目 中 使用 Dllplugin 打包優(yōu)化,需要的朋友可以參考下2023-01-01如何使用 React Router v6 在 React 中
面包屑在網(wǎng)頁(yè)開(kāi)發(fā)中的角色不可忽視,它們?yōu)橛脩?hù)提供了一種跟蹤其在網(wǎng)頁(yè)中當(dāng)前位置的方法,并有助于網(wǎng)頁(yè)導(dǎo)航,本文介紹了如何使用react-router v6和bootstrap在react中實(shí)現(xiàn)面包屑,感興趣的朋友一起看看吧2024-09-09使用React實(shí)現(xiàn)一個(gè)簡(jiǎn)單的待辦事項(xiàng)列表的示例代碼
這篇文章我們將詳細(xì)講解如何建立一個(gè)這樣簡(jiǎn)單的列表,文章通過(guò)代碼示例介紹的非常詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-08-08React Native基礎(chǔ)入門(mén)之初步使用Flexbox布局
React中引入了flexbox概念,flexbox是屬于web前端領(lǐng)域CSS的一種布局方案,下面這篇文章主要給大家介紹了關(guān)于React Native基礎(chǔ)入門(mén)之初步使用Flexbox布局的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07基于React-Dropzone開(kāi)發(fā)上傳組件功能(實(shí)例演示)
這篇文章主要介紹了基于React-Dropzone開(kāi)發(fā)上傳組件,主要講述的是在React-Flask框架上開(kāi)發(fā)上傳組件的技巧,需要的朋友可以參考下2021-08-08