站長資訊網
        最全最豐富的資訊網站

        vue怎么修改父組件值

        vue修改父組件值的方法:1、通過props的方式,將父組件的方法傳遞到子組件,在子組件中通過props接收;2、通過“this.$emit”觸發父組件方法實現修改;3、通過“this.$parent”直接觸發父組件修改即可。

        vue怎么修改父組件值

        本教程操作環境:Windows10系統、Vue 3版、Dell G3電腦。

        vue怎么修改父組件值?

        vue中子組件更改父組件數據

        因為vue是單項數據流,所以沒辦法直接在子組件中去修改父組件里面的數據,vue提倡單項數據流,為了防止項目過于復雜時,導致數據流難以理解。引用Vue的官網的話:父系 prop 的更新會向下流動到子組件中,但是反過來則不行。這樣會防止從子組件意外改變父及組件的狀態,從而導致你的應用的數據流向難以理解。所以在項目開發過程中,我們總是通過子組件觸發父組件中方法的方式,通過父組件的方法,更改父組件的數據。

        一、props傳遞方法

        通過props的方式,將父組件的方法傳遞到子組件,在子組件中通過props接收,可以在當前組件的實例上直接觸發父組件的方法,從而實現子組件更改父組件的值。同事也可以將子組件的數據,以參數的形式發送給父組件。

        由于代碼不多,就暫且全部展示,僅需關心相關事件就可以

        //父組件,設置更改自己數據的方法,將該方法傳遞給子組件 <template>   <div>     <h1>我是父組件</h1>     <HelloWorld :msg="msg" :changeMsg="changeMsg"/>   </div> </template>   <script> import HelloWorld from '@/components/HelloWorld.vue'   export default {   name: 'Home',   components: {     HelloWorld   },   methods:{     changeMsg(text,num){       console.log(text,num);       this.msg=this.msg+1     }   },   data(){     return{       msg:1     }   } } </script>       //子組件,接收父組件傳遞過來的方法,通過props接收到的方法和數據,在組件實例上可以直接獲取和觸發 <template>   <div>     <h1>我是子組件<button @click="changeFatherData">點我更改父組件數據</button></h1>     <h1>父組件數據:{{msg}}</h1>        </div> </template>   <script> export default {   name: 'HelloWorld',   props: {     msg: Number,     changeMsg:Function   },   data(){     return{       text:"我是子組件數據,我要發送給父組件",       num:12     }   },   methods:{     changeFatherData(){       this.changeMsg(this.text,this.num)     }   }, } </script>   <style scoped>   </style>
        登錄后復制

        二、通過this.$emit觸發父組件方法實現

        在父組件中自定義一個方法,然后傳遞給子組件,子組件通過this.$emit直接觸發父組件中的數據,實現父子組件通信。子組件觸發事件,父組件監聽事件。

        //父組件,將定義的方法傳遞給子元素 <template>   <div>     <h1>我是父組件</h1>     <HelloWorld :msg="msg" @changeMsg="changeMsg"/>   </div> </template>   <script> import HelloWorld from '@/components/HelloWorld.vue'   export default {   name: 'Home',   components: {     HelloWorld   },   methods:{     changeMsg(text,num){       console.log(text,num);       this.msg=this.msg+1     }   },   data(){     return{       msg:1     }   } } </script>     //子組件,通過this.$emit觸發父組件方法,更改父組件數據,同時可以進行數據傳值 <template>   <div>     <h1>我是子組件<button @click="changeFatherData">點我更改父組件數據</button></h1>     <h1>父組件數據:{{msg}}</h1>        </div> </template>   <script> export default {   name: 'HelloWorld',   props: {     msg: Number,   },   data(){     return{       text:"我是子組件數據,我要發送給父組件",       num:12     }   },   methods:{     changeFatherData(){       this.$emit('changeMsg',this.text,this.num)     }   }, } </script>   <style scoped>   </style>
        登錄后復制

        三、子組件通過this.$parent直接觸發父組件(代碼簡潔,推薦使用)

        子組件直接觸發父組件事件,無需進行方法的傳遞、接收,以及事件的定義。

        //父組件,聲明需要的方法 <template>   <div>     <h1>我是父組件</h1>     <HelloWorld :msg="msg"/>   </div> </template>   <script> import HelloWorld from '@/components/HelloWorld.vue'   export default {   name: 'Home',   components: {     HelloWorld   },   methods:{     changeMsg(text,num){       console.log(text,num);       this.msg=this.msg+1     }   },   data(){     return{       msg:1     }   } } </script>     //子組件,this.$parent直接觸發父組件方法 <template>   <div>     <h1>我是子組件<button @click="changeFatherData">點我更改父組件數據</button></h1>     <h1>父組件數據:{{msg}}</h1>        </div> </template>   <script> export default {   name: 'HelloWorld',   props: {     msg: Number,   },   data(){     return{       text:"我是子組件數據,我要發送給父組件",       num:12     }   },   methods:{     changeFatherData(){       this.$parent.changeMsg(this.text,this.num)     }   }, } </script>   <style scoped>   </style>
        登錄后復制

        推薦學習:《vue.js視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品久久久无码人妻中文字幕豆芽| 精品久久一区二区三区| 国产精品女同一区二区| 久久夜色精品国产亚洲av| 国产福利视精品永久免费| 尤物国精品午夜福利视频| 国产69精品久久久久99尤物| 国产精品白浆在线观看免费| 亚洲精品国产精品乱码不卡 | 人人妻人人澡人人爽欧美精品| 国内精品免费久久影院| 99久久精品无码一区二区毛片 | 久久精品国产亚洲AV香蕉| 欧美亚洲日本久久精品| 国产精品午夜免费观看网站| 国产精品久久久久9999高清| 精品一区二区三区波多野结衣| 一本色道久久88精品综合| 日本精品一区二区三区在线视频一 | 亚洲AV无码成人精品区大在线| 国产香蕉国产精品偷在线| 国产精品视频九九九| 国产精品亚洲αv天堂无码| 亚洲精品视频在线| 免费欧美精品a在线| 国产精品素人搭讪在线播放| 成人伊人精品色XXXX视频 | 亚洲∧v久久久无码精品 | 国产精品视频免费一区二区| 国产精品1024在线永久免费| 99爱在线视频这里只有精品| 99精品人妻少妇一区二区| 99热热久久这里只有精品68| 99精品福利国产在线| 国产精品无码DVD在线观看| 精品无码国产污污污免费网站国产| 国产精品香蕉在线观看| 久久久精品日本一区二区三区| 欧美黑人巨大videos精品| 亚洲精品动漫免费二区| 最新精品国偷自产在线|