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

vue3 父子組件傳值詳解

 更新時(shí)間:2021年11月16日 10:17:32   作者:淮北才子  
這篇文章主要為大家介紹了vue的父子組件傳值,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

現(xiàn)在距離vue3的誕生已經(jīng)過(guò)了很長(zhǎng)時(shí)間了,筆者也是近期才開(kāi)始學(xué)習(xí)vue3。對(duì)比vue2來(lái)看,vue3在寫法發(fā)生了不小的變化,最典型的例子就是vue3通過(guò)ref,或者reactive實(shí)現(xiàn)數(shù)據(jù)的響應(yīng)式。因?yàn)閞ef和reactive的出現(xiàn),使得vue3中父子組件的傳值方式也發(fā)生了變化

咱們先看下vue2中的寫法

父組件:

<!-- 父組件 -->
<template>
  <div>
    <children :title="title" @getChildren="getChildren"></children>
    <div>子組件說(shuō): {{ childrenAsk }}</div>
  </div>
</template>
 
<script>
  import children from "./children.vue"
  export default {
    data() {
      return {
        title: "我是父組件傳過(guò)來(lái)的值",
        childrenAsk: ""
      }
    },
    methods: {
      getChildren(val) {
        this.childrenAsk = val
      }
    }
  }
</script>

子組件:

<!-- 子組件 -->
<template>
  <div>
    <div>父組件傳過(guò)來(lái)的值: {{ title }}</div>
    <button @click="askToFather">點(diǎn)擊發(fā)送給父組件</button>
  </div>
</template>
<script>
  export default {
    props: {
      title: {
        type: String
      }
    },
    data() {
      return {
        askMsg: "這是我給父組件說(shuō)的話"
      }
    },
    methods: {
      askToFather() {
        this.$emit("getChildren", this.askMsg)
      }
    }
  }
</script>

在vue2中,子組件向父組件傳值通過(guò)this.$emit的形式實(shí)現(xiàn),但是vue3中,是不存在this的,vue3中將數(shù)據(jù)和函數(shù)都封裝在了setup中,那么vue3是怎么實(shí)現(xiàn)的呢?

我們知道vue3中的setup接收兩個(gè)參數(shù),第一個(gè)參數(shù)是props,即父組件向子組件傳遞的props值,第二個(gè)值為context,這個(gè)值代表了當(dāng)前的上下文對(duì)象,知道這個(gè)東西以后現(xiàn)在來(lái)實(shí)現(xiàn)vue3的父子組件傳值

vue3中父?jìng)髯雍蛌ue2中的父?jìng)髯右粯?,再次不做過(guò)多闡述,下面重點(diǎn)關(guān)注的是vue3的子傳父

父組件

<template>
  <div style="color: aqua">父組件</div>
  <div>子組件對(duì)我說(shuō):{{ children_msg }}</div>
  <children :title="msg" @listen="listenToChildren"></children>
  {{ value }}
</template>
<script lang="ts">
import children from "@/views/component_emit/children.vue"
import { defineComponent, ref } from "vue"
export default defineComponent({
  components: {
    children,
  },
  name: "father",
  setup() {
    let msg = "我是父組件"
    let children_msg = ref("") // ref的作用是實(shí)現(xiàn)響應(yīng)式, 如果沒(méi)有ref則不能實(shí)現(xiàn)響應(yīng)式(引用數(shù)據(jù)類型用reactive)
    let listenToChildren = (val) => {
      children_msg.value = val // 使用ref包裹的數(shù)據(jù),需要通過(guò).value的形式訪問(wèn)他的值
    }
    return {
      msg,
      children_msg,
      listenToChildren,
    }
  },
})
</script>
<style></style>

子組件:

<template>
  <div style="color: brown">子組件</div>
  <!-- 父?jìng)髯邮褂梅椒ê蛌ue2相同 -->
  <div>父組件傳過(guò)來(lái)的值為:{{ title }}</div>
  <button @click="sayToFather">向父組件說(shuō)話</button>
</template>
<script lang="ts">
import { defineComponent } from "vue"
export default defineComponent({
  name: "children",
  props: {
    title: {
      type: String,
    },
  },
  setup(props, context) {
    // context作用是獲取上下文對(duì)象,
    // 如果setup寫法為setup(props, { emit })的方式的話,下面的context可以省略
    const sayToFather = () => {
      const ask = "我是子組件,我對(duì)父組件說(shuō)話"
      context.emit("listen", ask)
    }
    return {
      sayToFather,
    }
  },
})
</script>
<style></style>

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 基于Vue實(shí)例生命周期(全面解析)

    基于Vue實(shí)例生命周期(全面解析)

    下面小編就為大家?guī)?lái)一篇基于Vue實(shí)例生命周期(全面解析)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 基于vue的tab-list類目切換商品列表組件的示例代碼

    基于vue的tab-list類目切換商品列表組件的示例代碼

    這篇文章主要介紹了基于vue的tab-list類目切換商品列表組件的示例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • vue中的inject學(xué)習(xí)教程

    vue中的inject學(xué)習(xí)教程

    本文通過(guò)實(shí)例代碼給大家介紹了vue中的inject學(xué)習(xí)教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-04-04
  • 簡(jiǎn)單實(shí)現(xiàn)一個(gè)vue公式編輯器組件demo

    簡(jiǎn)單實(shí)現(xiàn)一個(gè)vue公式編輯器組件demo

    這篇文章主要介紹了輕松實(shí)現(xiàn)一個(gè)簡(jiǎn)單的vue公式編輯器組件示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • vue3 Composition API使用示例教程

    vue3 Composition API使用示例教程

    Vue3新增了Composition API,我們只需將實(shí)現(xiàn)某一功能的相關(guān)代碼全部放進(jìn)一個(gè)函數(shù)中,然后return需要對(duì)外暴露的對(duì)象,這篇文章主要介紹了vue3 Composition API使用,需要的朋友可以參考下
    2022-12-12
  • vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面詳解

    vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面詳解

    彈窗是我們開(kāi)發(fā)中經(jīng)常遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Vue?router?路由守衛(wèi)詳解

    Vue?router?路由守衛(wèi)詳解

    這篇文章主要為大家介紹了Vue?router?路由守衛(wèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • Vue3中如何自定義雙向綁定

    Vue3中如何自定義雙向綁定

    這篇文章主要介紹了Vue3中如何自定義雙向綁定問(wèn)題,具有很好的參考價(jià)價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解從Vue.js源碼看異步更新DOM策略及nextTick

    詳解從Vue.js源碼看異步更新DOM策略及nextTick

    本篇文章主要介紹了從Vue.js源碼看異步更新DOM策略及nextTick,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一
    2017-10-10
  • vue2.0 elementUI制作面包屑導(dǎo)航欄

    vue2.0 elementUI制作面包屑導(dǎo)航欄

    本篇文章主要給大家詳細(xì)代碼講解了vue2.0 elementUI制作面包屑導(dǎo)航欄的過(guò)程,對(duì)此有興趣的朋友可以學(xué)習(xí)下。
    2018-02-02

最新評(píng)論

大厂| 江西省| 侯马市| 凤城市| 仁怀市| 夹江县| 吴堡县| 屏东市| 丽水市| 竹溪县| 眉山市| 嘉黎县| 姜堰市| 巴林右旗| 三台县| 蒙自县| 陇西县| 镇宁| 灵武市| 金寨县| 兴城市| 拉孜县| 新丰县| 洛阳市| 西青区| 临沧市| 玉田县| 鸡东县| 盐源县| 宁化县| 陇川县| 丰原市| 水富县| 乌兰县| 五寨县| 辉县市| 西平县| 吴旗县| 运城市| 永年县| 天全县|