亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue中sync修飾符分析原理及用法示例

 更新時間:2022年08月04日 09:14:02   作者:Celester_best  
在vue中,子組件如果想修改父組件的變量,一般做法是通過綁定事件的方法,父組件向子組件傳遞修改變量的方法,子組件觸發(fā)修改變量的方法執(zhí)行,這種方式中規(guī)中矩;另一種方法是使用sync修飾符,此方法可以減少很多代碼量

前幾天在看別人代碼時,發(fā)現(xiàn)了sync修飾符的妙用,特記錄其用法和原理如下。

不使用sync修飾符的代碼示例

父組件:

<template>
  <div>
    <div v-if="show">11111</div>
    <h3>下面是子組件</h3>
    <SyncDemo :show="show" @update="update"></SyncDemo>
  </div>
</template>
<script>
import SyncDemo from "./SyncDemo.vue";
export default {
  name: "Test",
  components: { SyncDemo },
  props: [],
  data() {
    return {
      show: true,
    };
  },
  methods: {
    update(flag) {
      this.show = flag;
    },
  },
};
</script>

子組件:

<template>
  <div>
    <button @click="changeFlag">點擊</button>
  </div>
</template>
<script>
export default {
  name: "SyncDemo",
  components: {},
  props: ["show"],
  methods: {
    changeFlag() {
      this.$emit("update", !this.show);
    },
  },
};
</script>

點擊子組件的按鈕就可以控制父組件“11111”的顯示與隱藏。

使用sync修飾符,代碼就會簡單很多。

使用sync修飾符的代碼示例

父組件:

<template>
  <div>
    <div v-if="show">11111</div>
    <h3>下面是子組件</h3>
    <SyncDemo :show.sync="show"></SyncDemo>
  </div>
</template>
<script>
import SyncDemo from "./SyncDemo.vue";
export default {
  name: "Test",
  components: { SyncDemo },
  props: [],
  data() {
    return {
      show: true,
    };
  },
};
</script>

子組件:

<template>
  <div>
    <button @click="changeFlag">點擊</button>
  </div>
</template>
<script>
export default {
  name: "SyncDemo",
  components: {},
  props: ["show"],
  methods: {
    changeFlag() {
      this.$emit("update:show", !this.show);
    },
  },
};
</script>

可以看到使用sync修飾符之后,父組件就不需要向子組件傳遞方法,父組件也不需要特意寫修改變量的方法了。此時點擊子組件的按鈕,一樣可以控制父組件的“11111”的顯示與隱藏。

sync修飾符的原理

在不使用sync時父組件中子組件綁定的update事件沒有傳遞參數(shù),其實綁定事件默認(rèn)傳遞了$event參數(shù)。

這里值得注意的是如果綁定的是clikc等原生事件時,$event是指事件對象,如果是自定義事件,$event則指子組件觸發(fā)該方法時傳遞的參數(shù),在上面的例子中,$event則指show變量。

所以不使用sync修飾符時,父組件的代碼可以改造成如下(直接將$event賦值給show變量,父組件不需要再另外寫一個修改變量的方法):

<template>
  <div>
    <div v-if="show">11111</div>
    <h3>下面是子組件</h3>
    <SyncDemo :show="show" @update="show = $event"></SyncDemo>
  </div>
</template>
<script>
import SyncDemo from "./SyncDemo.vue";
export default {
  name: "Test",
  components: { SyncDemo },
  props: [],
  data() {
    return {
      show: true,
    };
  },
};
</script>

我們再進(jìn)一步修改代碼(綁定方法時指明要修改的變量):

<SyncDemo :show="show" @update:show="show = $event"></SyncDemo>

這行代碼的語法糖的方式就是使用sync修飾符(代碼變得更簡單)

<SyncDemo :show.sync="show"></SyncDemo>

以上就是通過一步步代碼演變,最后變成使用sync修飾符的方式修改父組件的變量,使我們明白了sync修飾符的原理。

現(xiàn)粘貼vue官網(wǎng)上關(guān)于sync修飾符的解釋:

到此這篇關(guān)于Vue中sync修飾符分析原理及用法示例的文章就介紹到這了,更多相關(guān)Vue sync修飾符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue報錯Component?name"Home"should?always?be?multi問題

    Vue報錯Component?name"Home"should?always?be?mult

    這篇文章主要介紹了Vue報錯Component?name"Home"should?always?be?multi問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue3.x源碼調(diào)試的實現(xiàn)方法

    Vue3.x源碼調(diào)試的實現(xiàn)方法

    這篇文章主要介紹了Vue3.x源碼調(diào)試的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • vue3動態(tài)加載對話框的方法實例

    vue3動態(tài)加載對話框的方法實例

    對話框是很常用的組件,在很多地方都會用到,下面這篇文章主要給大家介紹了關(guān)于vue3動態(tài)加載對話框的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • ElementUI中el-input無法輸入、修改及刪除問題解決辦法

    ElementUI中el-input無法輸入、修改及刪除問題解決辦法

    這篇文章主要給大家介紹了關(guān)于ElementUI中el-input無法輸入、修改及刪除問題的解決辦法,這種問題產(chǎn)生是因為input在vue中的受控,我們需要去重新改變一下監(jiān)聽和實現(xiàn),需要的朋友可以參考下
    2023-11-11
  • Vue.js+HighCharts實現(xiàn)動態(tài)請求展示時序數(shù)據(jù)

    Vue.js+HighCharts實現(xiàn)動態(tài)請求展示時序數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了Vue.js+HighCharts實現(xiàn)動態(tài)請求展示時序數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue動畫之點擊按鈕往上漸漸顯示出來的實例

    vue動畫之點擊按鈕往上漸漸顯示出來的實例

    今天小編就為大家分享一篇vue動畫之點擊按鈕往上漸漸顯示出來的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue導(dǎo)出excel表格并支持樣式及行高修改

    vue導(dǎo)出excel表格并支持樣式及行高修改

    這篇文章主要為大家介紹了vue導(dǎo)出excel表格并支持樣式及行高修改,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Vue2如何支持composition API示例詳解

    Vue2如何支持composition API示例詳解

    這篇文章主要為大家介紹了Vue2如何支持composition API示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • vue mint-ui學(xué)習(xí)筆記之picker的使用

    vue mint-ui學(xué)習(xí)筆記之picker的使用

    本篇文章主要介紹了vue mint-ui學(xué)習(xí)筆記之picker的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • element ui的el-input-number修改數(shù)值失效的問題及解決

    element ui的el-input-number修改數(shù)值失效的問題及解決

    這篇文章主要介紹了element ui的el-input-number修改數(shù)值失效的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評論