欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3 父子組件傳值詳解

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

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

咱們先看下vue2中的寫法

父組件:

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

子組件:

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

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

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

vue3中父傳子和vue2中的父傳子一樣,再次不做過多闡述,下面重點關(guān)注的是vue3的子傳父

父組件

<template>
  <div style="color: aqua">父組件</div>
  <div>子組件對我說:{{ 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的作用是實現(xiàn)響應(yīng)式, 如果沒有ref則不能實現(xiàn)響應(yīng)式(引用數(shù)據(jù)類型用reactive)
    let listenToChildren = (val) => {
      children_msg.value = val // 使用ref包裹的數(shù)據(jù),需要通過.value的形式訪問他的值
    }
    return {
      msg,
      children_msg,
      listenToChildren,
    }
  },
})
</script>
<style></style>

子組件:

<template>
  <div style="color: brown">子組件</div>
  <!-- 父傳子使用方法和vue2相同 -->
  <div>父組件傳過來的值為:{{ title }}</div>
  <button @click="sayToFather">向父組件說話</button>
</template>
<script lang="ts">
import { defineComponent } from "vue"
export default defineComponent({
  name: "children",
  props: {
    title: {
      type: String,
    },
  },
  setup(props, context) {
    // context作用是獲取上下文對象,
    // 如果setup寫法為setup(props, { emit })的方式的話,下面的context可以省略
    const sayToFather = () => {
      const ask = "我是子組件,我對父組件說話"
      context.emit("listen", ask)
    }
    return {
      sayToFather,
    }
  },
})
</script>
<style></style>

總結(jié)

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

相關(guān)文章

  • vue iview組件表格 render函數(shù)的使用方法詳解

    vue iview組件表格 render函數(shù)的使用方法詳解

    下面小編就為大家分享一篇vue iview組件表格 render函數(shù)的使用方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue實現(xiàn)從外部修改組件內(nèi)部的變量的值

    vue實現(xiàn)從外部修改組件內(nèi)部的變量的值

    這篇文章主要介紹了vue實現(xiàn)從外部修改組件內(nèi)部的變量的值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue-router中 query傳參和params傳參的使用和區(qū)別講解

    vue-router中 query傳參和params傳參的使用和區(qū)別講解

    這篇文章主要介紹了vue-router中 query傳參和params傳參的使用和區(qū)別講解,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 解決vue-seamless-scroll滾動加點贊銜接處數(shù)據(jù)不同步問題

    解決vue-seamless-scroll滾動加點贊銜接處數(shù)據(jù)不同步問題

    這篇文章主要介紹了解決vue-seamless-scroll滾動加點贊銜接處數(shù)據(jù)不同步問題,初步判斷可能是因為下方懸接vue-seamless-scroll是靜態(tài)的,沒同步DOM,本文給大家分享解決方法,感興趣的朋友一起看看吧
    2021-11-11
  • vue項目中使用Svg的方法

    vue項目中使用Svg的方法

    本文主要以 vue-cli3 搭建的項目為例,來聊一下如何在項目中更優(yōu)雅的使用 svg 。感興趣的朋友跟隨小編一起看看吧
    2018-10-10
  • Vue3.x源碼調(diào)試的實現(xiàn)方法

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

    這篇文章主要介紹了Vue3.x源碼調(diào)試的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 講解vue-router之什么是嵌套路由

    講解vue-router之什么是嵌套路由

    這篇文章主要介紹了講解vue-router之什么是嵌套路由,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Vue3.0?axios跨域請求代理服務(wù)器配置方式

    Vue3.0?axios跨域請求代理服務(wù)器配置方式

    這篇文章主要介紹了Vue3.0?axios跨域請求代理服務(wù)器配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • antd form表單中如何嵌套自定義組件

    antd form表單中如何嵌套自定義組件

    這篇文章主要介紹了antd form表單中如何嵌套自定義組件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue自定義指令結(jié)合阿里云OSS優(yōu)化圖片的實現(xiàn)方法

    Vue自定義指令結(jié)合阿里云OSS優(yōu)化圖片的實現(xiàn)方法

    這篇文章主要介紹了Vue自定義指令結(jié)合阿里云OSS優(yōu)化圖片的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評論