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 Draggable插件如何實(shí)現(xiàn)拖拽功能
這篇文章主要介紹了React Draggable插件如何實(shí)現(xiàn)拖拽功能問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
React中不適當(dāng)?shù)腍ooks使用問(wèn)題及解決方案
在 React 開(kāi)發(fā)中,Hooks 提供了一種強(qiáng)大的方式來(lái)管理組件的狀態(tài)和生命周期,然而,不恰當(dāng)?shù)?nbsp;Hooks 使用可能會(huì)導(dǎo)致組件行為異常、性能問(wèn)題或難以調(diào)試的錯(cuò)誤,本文將探討 React 中常見(jiàn)的不適當(dāng) Hooks 使用問(wèn)題,并提供解決方案,需要的朋友可以參考下2025-03-03
React星星評(píng)分組件的實(shí)現(xiàn)
評(píng)分插件在購(gòu)物的應(yīng)用中經(jīng)??梢钥吹玫?,但是用著別人的總是沒(méi)有自己寫(xiě)的順手,本文就使用React實(shí)現(xiàn)星星評(píng)分組件,感興趣的可以了解一下2021-06-06
react-native ListView下拉刷新上拉加載實(shí)現(xiàn)代碼
本篇文章主要介紹了react-native ListView下拉刷新上拉加載實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
使用react-native-doc-viewer實(shí)現(xiàn)文檔預(yù)覽
這篇文章主要介紹了使用react-native-doc-viewer實(shí)現(xiàn)文檔預(yù)覽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

