您好,登錄后才能下訂單哦!
在項(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ù)大家的!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。