国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue父子組件之間傳值的方法

這篇具有很好參考價值的文章主要介紹了vue父子組件之間傳值的方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

vue父子組件之間傳值的方法

一、基本父子傳值

父傳子

方式:

props

效果:

把父組件的fatherName屬性傳入子組件,在子組件中使用

父組件代碼:
<template>
  <div>
    父組件:{{fatherName}}
    <SonVue :fatherName="fatherName"></SonVue>
  </div>
</template>
子組件代碼:
<template>
    <div>
        子組件:{{fatherName}}
    </div>
</template>

<script>
export default {
   props:['fatherName']
}
</script>

子傳父

方式:

$emit

效果:

在子組件觸發(fā)事件,修改父組件的fatherName屬性

父組件代碼:
父組件
<template>
  <div>
    父組件:{{fatherName}}
    <SonVue @sendChangeName="ChangeName"></SonVue>
  </div>
</template>
<script>
import SonVue from './components/Son.vue';
export default {
  data(){
    return {
      fatherName:'yj'
    }
  },
  methods:{
    ChangeName(v){
      this.fatherName = v
    }
  },
  components:{
    SonVue
  }
}
</script>
子組件代碼:
<template>
    <div>
        子組件:
        <button @click="ChangeName">修改父組件的fatherName</button>
    </div>
</template>

<script>
export default {
   methods: {
    ChangeName(){
        this.$emit('sendChangeName','yj666')
    }
   }
}
</script>

兄弟傳值

方式:

eventBus.js

效果:

任意組件之間相互傳值

代碼:

二、ref 父傳子

方式:

$refs

效果:

把父組件的fatherName屬性傳入子組件,在子組件中使用

父組件代碼:
<template>
  <div>
    父組件:{{fatherName}}
    <SonVue ref="dom"></SonVue>
    <button @click="$refs.dom.fatherName = 'yj666'">傳遞新值</button>
  </div>
</template>
子組件代碼:
<template>
    <div>
        子組件:{{fatherName}}
    </div>
</template>
<script>
export default {
   data(){
    return {
        fatherName:''
    }
   }
}
</script>

三、v-model 父子傳值

方式:

在父組件中使用 v-model

效果:

父子組件之間相互傳值

解釋:

v-model 的父子傳值模式 其實(shí)是 綁定的 value 屬性和 input 事件的語法糖,可以由 props+$emit 模式演變而來

props+$emit:
父組件代碼:
<template>
  <div>
    父組件:{{fatherName}}
    <SonVue :fatherName="fatherName" @sendChangeName="ChangeName"></SonVue>
  </div>
</template>
<script>
import SonVue from './components/Son.vue';
export default {
  data(){
    return {
      fatherName:'yj'
    }
  },
  methods:{
    ChangeName(v){
      this.fatherName = v
    }
  },
  components:{
    SonVue
  }
}
</script>
子組件代碼:
<template>
    <div>
        子組件:{{fatherName}}
        <button @click="ChangeName">修改父組件的fatherName</button>
    </div>
</template>

<script>
export default {
   props:['fatherName'],
   methods: {
    ChangeName(){
        this.$emit('sendChangeName','yj666')
    }
   }
}
</script>
核心代碼改造:
<SonVue :fatherName="fatherName" @sendChangeName="ChangeName"></SonVue>
<!-- 
改造:修改變量名和事件名
1. 把fatherName改造為value
2. 把自定義事件sendChangeName改造為input
3. 把事件ChangeName改造為fn
4. 進(jìn)一步把事件ChangeName改造為 value => value = v
5. 或者  把事件ChangeName改造為 value = $event
-->

<SonVue :value="value" @input="v => value = v"></SonVue>
<SonVue :value="value" @input="value = $event"></SonVue>

<!--
聯(lián)想:v-model 其實(shí)也可以由綁定事件:value="value" + 事件監(jiān)聽 @input="v => value = v" 組成
意味著: :value="value" @input="v => value = v" 可以替換為 v-model = ‘value’
效果:將父組件屬性 vlaue 值傳遞到子組件中使用,并子組件觸發(fā)自定義事件 input 來改變父組件中 value 的值
-->

<SonVue v-model="value"></SonVue>
v-model
父組件代碼:
<template>
  <div>
    父組件:{{value}}
    <SonVue v-model="value"></SonVue>
  </div>
</template>

<script>
import SonVue from './components/Son.vue';
export default {
  data(){
    return {
      value:'yj'
    }
  },
  components:{
    SonVue
  }
}
</script>
子組件代碼:
<template>
    <div>
        子組件:{{value}}
        <button @click="$emit('input','yj666')">修改父組件的value</button>
    </div>
</template>

<script>
export default {
   props:['value']
}
</script>
問題:
  • 父組件變量只能叫 value
  • 子組件自定義事件只能叫 input
解決:

通過設(shè)置 子組件 身上的model屬性,來更改變量名name和自定義事件input的問題

model:{
    prop: 'newValue',
    event: 'newInput'
}
父組件代碼:
<template>
  <div>
    父組件:{{newValue}}
    <SonVue v-model="newValue"></SonVue>
  </div>
</template>

<script>
import SonVue from './components/Son.vue';
export default {
  data(){
    return {
      newValue:'yjj'
    }
  },
  components:{
    SonVue
  }
}
</script>
子組件代碼:
<template>
    <div>
        子組件:{{newValue}}
        <button @click="$emit('newInput','yj666')">修改父組件的value</button>
    </div>
</template>

<script>
export default {
   props:['newValue'],
   model:{
       prop: 'newValue',
       event: 'newInput'
   }
}
</script>
優(yōu)勢:

v-model模式父子傳值比props+$emit模式更加簡單

缺點(diǎn):

不能夠一次傳遞多個屬性,通過方法四可以處理

四.sync修飾符 父子傳值

方式:

在父組件中使用 綁定修飾符 :newValue.sync = ‘newValue’

效果:

父子組件之間相互傳值

解釋:

.sync 的父子傳值模式 其實(shí)是綁定的屬性和事件的語法糖

:val.sync = ‘val’ 等價于 :val"val" @update:val = “val = $event”文章來源地址http://www.zghlxwxcb.cn/news/detail-699960.html

props+$emit 模式核心代碼:
父組件代碼改造:
<SonVue :fatherName="fatherName" @sendChangeName="ChangeName"></SonVue>
<!-- 
第一次父改造:修改自定義事件名和事件內(nèi)容
1. 把自定義事件sendChangeName改造為update(此時可以任意命名)
2. 把事件名ChangeName改造為具體代碼 fatherName = $event
-->
<SonVue :fatherName="fatherName" @update="value = $event"></SonVue>
<!-- 
第二次父改造:
1. 去掉 @update="value = $event"
2. 加入.sync修飾符
-->
<SonVue :fatherName.sync="fatherName"></SonVue>
子組件代碼改造:
<button @click="ChangeName">修改父組件的fatherName</button>
<!-- 
第一次子改造:修改事件內(nèi)容
1. 把自定義事件sendChangeName改造為$emit('newValue','yj666')
-->
<button @click="$emit('newValue','yj666')">修改父組件的value</button>
<!-- 
第二次子改造:確保和父組件事件掛鉤(第二次改造時去掉的事件和內(nèi)容)
1. 在$emit('newValue','yj64666')的屬性前,加入事件名update (此時必須是update的事件名)
-->
<button @click="$emit('update:newValue','yj64666')">修改父組件的value</button>

到了這里,關(guān)于vue父子組件之間傳值的方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue組件間傳值的六種方法

    vue組件間傳值的六種方法

    父組件代碼: 子組件代碼: 頁面顯示: 子組件代碼: 父組件代碼: 頁面顯示: 父子組件傳值原理:父子組件的關(guān)系可以總結(jié)為 prop 向下傳遞,事件向上傳遞。父組件通過 prop 給子組件下發(fā)數(shù)據(jù),子組件通過事件給父組件發(fā)送消息,如下圖所示: ref:如果在普通的 DOM 元素

    2024年02月15日
    瀏覽(30)
  • Vue3中子組件向父組件傳值的方法

    父組件可以通過props向子組件傳值, 子組件可以用過 emits(‘update:prop’, propValue) 修改父組件綁定在此Prop上父組件的值 本文演示了一個可以緩存分頁大小(每頁顯示幾行數(shù)據(jù))的分頁組件的使用, 它是對el-pagination做了一個簡單的封裝 如下是一個分頁組件 核心: 在換頁時通過 emit

    2024年02月16日
    瀏覽(25)
  • 【微信小程序】父子組件之間傳值

    【微信小程序】父子組件之間傳值

    1. 父組件向子組件 傳值 2. 子組件向父組件 傳值 父向子傳值使用的是 屬性綁定 ,子組件中的 properties 對象進(jìn)行接收父組件傳遞過來的值。 子向父傳值使用的是 自定義事件 ,父組件通過自定義事件中的 事件對象e 來接收子組件傳遞過來的值。 1.1 在父組件的.json文件中導(dǎo)入子

    2024年02月16日
    瀏覽(23)
  • vue2和vue3 子組件父組件之間的傳值方法

    在組件化開發(fā)的過程中難免會遇見 子組件和父組件之間的通訊那么這里講關(guān)于vue2和vue3不同的通訊方式 先看一下vue2 父組件向子組件傳遞參數(shù) 父組件通過 : 語法 其實(shí)就是v-bind 來傳遞參數(shù) 子組件通過 props 來獲取父組件傳遞的方法 億點(diǎn)小知識:子組件接收到數(shù)據(jù)之后,不能直接

    2024年02月09日
    瀏覽(23)
  • vue3 父子組件傳值 記錄

    vue3 父子組件傳值 記錄

    最近這個組件之間傳值用的較多,我這該死的記性,總給忘記寫法,特此記錄下 補(bǔ)充:LeftView.vue 是父組件; Video.vue 是子組件 Video.vue 子組件 LeftView.vue 父組件 第一步 創(chuàng)建bus.js文件 第二步 分別在需要相互傳參的組件中引入bus.js文件,并相互傳參

    2024年02月11日
    瀏覽(22)
  • vue父子組件傳值不能實(shí)時更新

    vue父子組件傳值不能實(shí)時更新

    最近做項目,遇到個大坑,這會爬出來了,寫個總結(jié),避免下次掉坑。 vue父子組件傳值不能實(shí)時更新問題,父組件將值傳給了子組件,但子組件顯示的值還是原來的初始值,并沒有實(shí)時更新,為什么會出現(xiàn)這種問題呢? 出現(xiàn)這個問題,可能有以下兩個原因: 一、 父組件沒有

    2024年02月16日
    瀏覽(25)
  • Vue父子組件值的傳遞【極簡版】

    前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。【寶藏入口】。 在Vue.js中,父組件向子組件傳遞值通常通過props(屬性)來實(shí)現(xiàn)。以下是一種典型的方法: 在父組件中,可以使用子組件的標(biāo)簽,并通過props屬性將數(shù)據(jù)傳遞給子組件

    2024年01月24日
    瀏覽(34)
  • uniapp父子組件傳值三種方法

    uniapp,父組件向子組件傳值有三種方法,分別為props、slot,和ref props 這個應(yīng)該是最簡單最常用的方法,就是子組件寫變量,然后把變量名字在js中進(jìn)行props slot 插值比較靈活,可以在任何需要寫入的地方進(jìn)行slot ,slot寫入name標(biāo)簽后,在父組件進(jìn)行插值#name ref 函數(shù)控制 這個是

    2024年02月13日
    瀏覽(21)
  • vue父子組件傳值(v-model)

    子組件使用 props 接收父組件傳來的值 1)這里有個大坑, el-dialog 中一定要用 model-value 來代替 v-model ,不能用 v-model ,否則會報錯 (2)子組件中修改父組件傳入的參數(shù) visible 時,使用 ??方式

    2024年02月11日
    瀏覽(26)
  • Vue3 TS寫法 父子組件傳值(通訊)

    父組件: 子組件: 通過defineProps來接受數(shù)據(jù)(無須引入直接使用即可) 子組件可寫默認(rèn)值也可以不寫兩種情況 子組件通過defineEmits派發(fā)一個事件?(一樣無須引入直接使用即可) ?父組件接受子組件的事件 chilFun

    2024年02月15日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包