摘要:前言中的數(shù)據(jù)流動有很好的解決方案,但是對于初學(xué)者來說學(xué)習(xí)曲線比較陡,并且在小型項目不太適用,開發(fā)維護(hù)成本都比較高,所以這里我只說多帶帶用的情況下組件之間傳值的用法,自學(xué)的,有不足煩請大神指正。以上是最近學(xué)習(xí)所得,如有錯誤煩請指正,不勝感激
前言:react中的數(shù)據(jù)流動有很好的解決方案:redux,但是redux對于初學(xué)者來說學(xué)習(xí)曲線比較陡,并且在小型項目不太適用,開發(fā)維護(hù)成本都比較高,所以這里我只說多帶帶用react的情況下組件之間傳值的用法,自學(xué)的,有不足煩請大神指正。
父組件傳遞給子組件:
核心思路就是將父組件中的state傳遞給子組件
父組件代碼: class Father extends React.Component { constructor(props){ super(props); // 父組件的state this.state = { menu:[] } } componentDidMount() { // 這里可以發(fā)ajax請求 去后端請求數(shù)據(jù) 通過setState將值保存到自己的state中 // 假定data為后端請求回來的數(shù)據(jù) var data = []; this.setState({ menu: data }) } render() { return ( {this.state.menu.map(function (data) { return})} ) } } export default Father; 子組件代碼: class Children extends React.Component { render(){ // 這里的data就是父組件傳遞過來的值 var data = this.props.data; return( ) } }
以上就是父組件傳值給子組件
現(xiàn)在的項目開發(fā)過程中,大多數(shù)的子組件是需要有一些數(shù)據(jù)上的操作的,比如input中的輸入、checkbox的選中與取消選中等,這樣的情況下就需要將子組件的數(shù)據(jù)回傳給父組件,應(yīng)用redux的話,可以通過store統(tǒng)一管理分發(fā)數(shù)據(jù),多帶帶用react也是可以實現(xiàn)的
子組件傳值給父組件:
總體思路就是父組件與子組件統(tǒng)一管理父組件中的state,父組件將state傳遞給子組件,子組件通過onChange將數(shù)據(jù)回傳給父組件的state
父組件代碼: class Father extends React.Component { constructor(props){ super(props); // 父組件的state this.state = { menu:[] } } componentDidMount() { // 這里可以發(fā)ajax請求 去后端請求數(shù)據(jù) 通過setState將值保存到自己的state中 // 假定data為后端請求回來的數(shù)據(jù) var data = []; this.setState({ menu: data }) } // 子組件觸發(fā) 參數(shù)就是子組件回傳回來的一些數(shù)據(jù) ChildrenFunc(data,value,key){ // 拿到當(dāng)前組件的state let menu = this.state.menu; // 遍歷當(dāng)前state,遍歷過程中可以對state中的值進(jìn)行修改 for(let i = 0; i < menu.length; i++){ if(key == menu[i].key){ menu[i].value = data; } }; // 將修改之后的值保存到當(dāng)前組件的state中 this.setState({ menu: menu }); } render() { return ( {this.state.menu.map(function (data) { // onUpdata方法就是子組件狀態(tài)改變時就會調(diào)用這個函數(shù),通過這個函數(shù)子組件就會觸發(fā)父組件的ChildrenFunc方法,從而達(dá)到修改state的功能 return{$this.ChildrenFunc(data,value,position)}}/> })} ) } } export default Father; 子組件代碼: class Children extends React.Component { // 子組件狀態(tài)改變就會觸發(fā)父組件傳遞過來的onUpdata方法,可以進(jìn)行一系列的傳值,比如將輸入值傳遞回去等 ChildrenChange(event,value,position){ this.props.onUpdata(event.target.value,value,position); } render(){ // 這里的data就是父組件傳遞過來的值 var data = this.props.data; return( ) } }
以上就是子組件傳值給父組件的實現(xiàn)方式,父組件中更進(jìn)一步操作(例如提交數(shù)據(jù))就可以通過自身state中的值來進(jìn)行提交
例如:
父組件中提交數(shù)據(jù): addData(){ // 獲取state let menu = this.state.menu; // 遍歷state 將我們要的數(shù)據(jù)取出來 var newArray = []; for(let i = 0; i < menu.length; i++){ if(menu[i].key == "某些我們需要的值"){ newArray.push(menu[i].value); } }; // 提交時的參數(shù) var data = { id: "xxxx", menu: newArray.join(",") } // 提交的ajax請求代碼。。。。。 }
以上是最近學(xué)習(xí)所得,如有錯誤煩請指正,不勝感激!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96048.html
摘要:目前只是體會到組件之間傳遞的值的初始來源一般都是值,可能是實踐不夠的原因。。。此時,可以建一個組件內(nèi)部封裝一個構(gòu)造函數(shù),內(nèi)部封裝三個方法。 PS:開頭的一段廢話 ???????想起一個月前還不知道reactjs該如何下手的而今天有點小體會,還是有點小欣慰,不過回望一些走過的坑和開始時的滿頭漿糊覺得還是有點恐怖的。今天分享一點實踐中的小心得給新手朋友們。 reactjs的es6語法形式 ...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進(jìn),適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:父組件默認(rèn)值默認(rèn)值哈哈哈哈傳值給子組件接受子組件的傳值為子組件啦啦啦啦接受父組件傳的值為傳值給父組件 父組件: import React, { Component } from react; import Child from ./chlid; class parent extends Component{ constructor(props) { super...
閱讀 2924·2021-11-17 09:33
閱讀 1642·2021-10-12 10:13
閱讀 2468·2021-09-22 15:48
閱讀 2343·2019-08-29 17:19
閱讀 2597·2019-08-26 11:50
閱讀 1574·2019-08-26 10:37
閱讀 1740·2019-08-23 16:54
閱讀 2928·2019-08-23 14:14