react 中父組件與子組件雙向綁定問(wèn)題
在項(xiàng)目中我們可能會(huì)遇到類(lèi)似這樣的場(chǎng)景,也就是父子組件的雙向數(shù)據(jù)綁定
首先,先把在head中引入react.js、react-dom.js和可選擇的babel.js
(這里需要注意引用的順序,react.js必須在react-dom.js之前)
<head> <script src="react.js"></script> <script src="react-dom.js"></script> <script src="babel.js"></script> </head>
在body里新建一個(gè)掛載點(diǎn)
<body> <div id='app'></div> </body>
然后就可以開(kāi)始寫(xiě)JSX了,注意script標(biāo)簽需注明type類(lèi)型為"text/babel"或"text/jsx"
<script tpye='text/babel'> //父組件 class Father extends React.Component { constructor(props) { super(props) this.state = { fname: '父組件', fage: 18, key: '' }; } setFname(event) { this.setState({fname: event.target.value, key: event.target.value}); //設(shè)置fname值為input的value值;key用來(lái)監(jiān)聽(tīng)值是否變化 } setFage(event) { this.setState({fage: event.target.value, key: event.target.value}) } toData(data) { this.setState({fname: data.name}); this.setState({fage: data.age}); } render() { return ( <div> <table border="1" cellSpacing="0"> <tbody> <tr> <th colSpan="3">父組件數(shù)據(jù)</th> </tr> <tr> <td>name</td> <td>{this.state.nameFvalue}</td> <td><input value={this.state.fname} onChange={this.setFname.bind(this)}/></td> //受控組件當(dāng)input值改變時(shí)觸發(fā)方法setFname </tr> <tr> <td>age</td> <td>{this.state.ageFvalue}</td> <td><input value={this.state.fage} onChange={this.setFage.bind(this)}/></td> </tr> </tbody> </table><br> <br> //子組件標(biāo)簽里將父組件的數(shù)據(jù)傳遞給子組件,在子組件里利用props接收;key值變化時(shí),子組件數(shù)據(jù)更新 <Son key={this.state.key} fname={this.state.fname} fage={this.state.fage} toData={this.toData.bind(this)}></Son> </div> ) } }<br><br><br> //子組件<br><br> class Son extends React.Component { constructor(props) { super(props) this.state = { sVname: this.props.fname, //將父組件傳下來(lái)的值賦給sVname sVage: this.props.fage } } sVname(ev) { console.log(ev.target) this.setState({ sVname: ev.target.value }) } sVage(ev) { this.setState({ sVage: ev.target.value }) } toData(data) { // console.log(svname) this.props.toData(data) } render() { return ( <div> <button onClick={this.toData.bind(this, {name: this.state.sVname, age: this.state.sVage})}>點(diǎn)我傳值 </button> <table border="1" cellSpacing="0"> <tbody> <tr> <th colSpan="3">子組件數(shù)據(jù)</th> </tr> <tr> <td>name</td> <td>{this.state.sVname}</td> <td><input value={this.state.sVname} onChange={this.sVname.bind(this)}/></td> </tr> <tr> <td>age</td> <td>{this.state.sVage}</td> <td><input value={this.state.sVage} onChange={this.sVage.bind(this)}/></td> </tr> </tbody> </table> </div> ) } } </script>
總結(jié)
以上所述是小編給大家介紹的react 中父組件與子組件雙向綁定問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
使用React+SpringBoot開(kāi)發(fā)一個(gè)協(xié)同編輯的表格文檔實(shí)現(xiàn)步驟
隨著云計(jì)算和團(tuán)隊(duì)協(xié)作的興起,協(xié)同編輯成為了許多企業(yè)和組織中必不可少的需求,本文小編就將為大家介紹如何使用React+SpringBoot簡(jiǎn)單的開(kāi)發(fā)一個(gè)協(xié)同編輯的表格文檔,感興趣的朋友一起看看吧2023-11-11React實(shí)現(xiàn)菜單欄滾動(dòng)功能
本文將會(huì)基于react實(shí)現(xiàn)滾動(dòng)菜單欄功能,點(diǎn)擊菜單,內(nèi)容區(qū)域會(huì)自動(dòng)滾動(dòng)到對(duì)應(yīng)卡片,內(nèi)容區(qū)域滑動(dòng),指定菜單欄會(huì)被選中,代碼簡(jiǎn)單易懂,感興趣的朋友一起看看吧2024-03-03react-beautiful-dnd 實(shí)現(xiàn)組件拖拽功能
這篇文章主要介紹了react-beautiful-dnd 實(shí)現(xiàn)組件拖拽功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08React?錯(cuò)誤邊界Error?Boundary使用示例解析
這篇文章主要為大家介紹了React?錯(cuò)誤邊界Error?Boundary使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09React 組件轉(zhuǎn) Vue 組件的命令寫(xiě)法
本文先介紹兩個(gè)框架的組件共性和不兼容的地方,再介紹react-to-vue的使用和原理,需要的朋友可以參考下2018-02-02