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

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

 更新時(shí)間:2022年08月04日 09:14:02   作者:Celester_best  
在vue中,子組件如果想修改父組件的變量,一般做法是通過綁定事件的方法,父組件向子組件傳遞修改變量的方法,子組件觸發(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修飾符,代碼就會簡單很多。

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

sync修飾符的原理

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

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

所以不使用sync修飾符時(shí),父組件的代碼可以改造成如下(直接將$event賦值給show變量,父組件不需要再另外寫一個(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>

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

<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基于iview實(shí)現(xiàn)登錄密碼的顯示與隱藏功能

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

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

    Vue之el-option下拉框綁定問題

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

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

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

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

    這篇文章主要介紹了vue-router子路由的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(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多種語言,下面這篇文章主要來和大家講講CodeMirror的應(yīng)用,感興趣的可以了解一下
    2023-06-06
  • 解決vue項(xiàng)目 build之后資源文件找不到的問題

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

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

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

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

    簡單談?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中嵌入可浮動的第三方網(wǎng)頁窗口的示例詳解

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

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

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

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

最新評論

定南县| 夏津县| 凤凰县| 芜湖县| 崇信县| 仙居县| 盘山县| 江阴市| 阜南县| 荆门市| 四会市| 潜江市| 汉源县| 台山市| 大新县| 岳阳县| 冕宁县| 五河县| 砀山县| 阿尔山市| 闽侯县| 尚义县| 清水县| 会泽县| 项城市| 湘西| 西青区| 伊宁县| 鹿邑县| 保定市| 留坝县| 望城县| 吉木乃县| 图木舒克市| 神农架林区| 重庆市| 修水县| 张掖市| 博野县| 正阳县| 五峰|