最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前幾天在看別人代碼時(shí),發(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">點(diǎn)擊</button>
  </div>
</template>
<script>
export default {
  name: "SyncDemo",
  components: {},
  props: ["show"],
  methods: {
    changeFlag() {
      this.$emit("update", !this.show);
    },
  },
};
</script>

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

使用sync修飾符,代碼就會(huì)簡(jiǎn)單很多。

使用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">點(diǎn)擊</button>
  </div>
</template>
<script>
export default {
  name: "SyncDemo",
  components: {},
  props: ["show"],
  methods: {
    changeFlag() {
      this.$emit("update:show", !this.show);
    },
  },
};
</script>

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

sync修飾符的原理

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

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

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

<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>

我們?cè)龠M(jìn)一步修改代碼(綁定方法時(shí)指明要修改的變量):

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

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

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

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

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

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

相關(guān)文章

  • Vue基于iview實(shí)現(xiàn)登錄密碼的顯示與隱藏功能

    Vue基于iview實(shí)現(xiàn)登錄密碼的顯示與隱藏功能

    這篇文章主要介紹了Vue基于iview實(shí)現(xiàn)登錄密碼的顯示與隱藏功能,本文通過(guò)截圖實(shí)例代碼說(shuō)明給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Vue之el-option下拉框綁定問(wèn)題

    Vue之el-option下拉框綁定問(wèn)題

    這篇文章主要介紹了Vue之el-option下拉框綁定問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 詳談vue中的rules表單驗(yàn)證(常用)

    詳談vue中的rules表單驗(yàn)證(常用)

    這篇文章主要介紹了關(guān)于vue中的rules表單驗(yàn)證(常用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue-router子路由的實(shí)現(xiàn)方式

    vue-router子路由的實(shí)現(xiàn)方式

    這篇文章主要介紹了vue-router子路由的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Vue進(jìn)階之CodeMirror的應(yīng)用小結(jié)

    Vue進(jìn)階之CodeMirror的應(yīng)用小結(jié)

    CodeMirror支持在線編輯代碼,風(fēng)格包括js, java, php, c++等等100多種語(yǔ)言,下面這篇文章主要來(lái)和大家講講CodeMirror的應(yīng)用,感興趣的可以了解一下
    2023-06-06
  • 解決vue項(xiàng)目 build之后資源文件找不到的問(wèn)題

    解決vue項(xiàng)目 build之后資源文件找不到的問(wèn)題

    這篇文章主要介紹了解決vue項(xiàng)目 build之后資源文件找不到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 一文帶你了解threejs在vue項(xiàng)目中的基本使用

    一文帶你了解threejs在vue項(xiàng)目中的基本使用

    three.js是一個(gè)用于在Web上創(chuàng)建三維圖形的JavaScript庫(kù),它可以用于創(chuàng)建各種類(lèi)型的三維場(chǎng)景,包括游戲、虛擬現(xiàn)實(shí)、建筑和產(chǎn)品可視化等,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一文帶你了解threejs在vue項(xiàng)目中的基本使用,需要的朋友可以參考下
    2023-04-04
  • 簡(jiǎn)單談?wù)刅ue3中的ref和reactive

    簡(jiǎn)單談?wù)刅ue3中的ref和reactive

    vue3中實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)的方法是就是使用ref和reactive,所謂響應(yīng)式就是界面和數(shù)據(jù)同步,能實(shí)現(xiàn)實(shí)時(shí)更新,下面這篇文章主要給大家介紹了關(guān)于Vue3中ref和reactive的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Vue中嵌入可浮動(dòng)的第三方網(wǎng)頁(yè)窗口的示例詳解

    Vue中嵌入可浮動(dòng)的第三方網(wǎng)頁(yè)窗口的示例詳解

    本文介紹了在Vue2項(xiàng)目中嵌入可浮動(dòng)的第三方網(wǎng)頁(yè)窗口的實(shí)現(xiàn)方法,包括使用iframe、div+script和dialog元素等方式,并提供了一個(gè)實(shí)戰(zhàn)Demo,展示了如何在Vue組件中動(dòng)態(tài)加載和控制浮窗的顯示,需要的朋友可以參考下
    2025-02-02
  • vue中異步數(shù)據(jù)獲取方式(確保數(shù)據(jù)被獲取)

    vue中異步數(shù)據(jù)獲取方式(確保數(shù)據(jù)被獲取)

    這篇文章主要介紹了vue中異步數(shù)據(jù)獲取方式(確保數(shù)據(jù)被獲取),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論

秦皇岛市| 手游| 安岳县| 资兴市| 章丘市| 永福县| 邹城市| 合江县| 宁都县| 镇雄县| 东丰县| 同心县| 武邑县| 修水县| 乌鲁木齐县| 金阳县| 江华| 广饶县| 天台县| 双峰县| 台中县| 鸡泽县| 法库县| 苏州市| 泰宁县| 蓝田县| 纳雍县| 广南县| 揭西县| 丹棱县| 黄冈市| 黎川县| 余干县| 阜新| 金沙县| 呼玛县| 勐海县| 宁津县| 二连浩特市| 平遥县| 安龙县|