美文网首页
Vue组件通信

Vue组件通信

作者: 家乡的蝈蝈 | 来源:发表于2024-03-28 11:08 被阅读0次

1.1 Vue组件通信介绍

1.什么是组件通信?

组件通信,就是指组件与组件之间的数据传递

  • 组件的数据是独立的,无法直接访问其他组件的数据。
  • 想使用其他组件的数据,就需要组件通信

2.组件关系分类

  1. 父子关系
  2. 非父子关系

3.父子通信流程

  1. 父组件通过 props 将数据传递给子组件
  2. 子组件利用 $emit 通知父组件修改更新

1.2 Vue父传子通信


父向子传值步骤

  1. 给子组件以添加属性的方式传值
  2. 子组件内部通过props接收
  3. 模板中直接使用 props接收的值

父组件中传值

import MyTest from './components/MyTest.vue'
  export default {
    data() {
      return {
        goodsList:[
          {id:1,name:"方便面",price:5.5,info:'方便'},
          {id:2,name:"瓜子",price:1.5,info:'美味'},
          {id:3,name:"花生",price:2.5,info:'好吃'},
        ]
      }
    },
    components: {
      MyTest,
    }
  }
<div class="app">
  <h2>App组件</h2>
  <!-- 父传子语法:
    父:通过自定义属性的方式,向子组件传递数据 -->
    语法格式:<my-test 属性名="传递的数据">
  <!-- <my-test :id="goodsList[0].id" :name="goodsList[0].name"></my-test> -->
  <!-- <my-test :item="goodsList[0]"></my-test> -->
  <my-test v-for="item in goodsList" :key="item.id" :obj="item"></my-test>
</div>

子组件接收

<template>
    <div class="goods">
        <h2>商品名称:{{obj.name}}</h2>
        <p>商品单价:{{obj.price}}</p>
        <p>商品描述:{{obj.info}}</p>

    </div>
</template>

<script>
    export default {
        // 子组件:需要通过props接受传递过来的数据
        props:['obj'] // props中的值一定要跟父组件自定义属性相同
        
    }
</script>

1.3 Vue子传父通信

子组件利用 $emit 通知父组件,进行修改更新



子向父传值步骤

  1. $emit触发事件,给父组件发送消息通知
  2. 父组件监听$emit触发的事件
  3. 提供处理函数,在函数的性参中获取传过来的参数

子组件传值

<!--  子组件不能直接修改父组件数据,要让父组件自己修改;下面的写法是不正确的 -->
<!-- <button @click="obj.price--">砍一刀</button> -->
<!-- 子传父的核心语法"$emit('事件名',传递的数据)"; $emit是vue的内置方法,用来触发事件-->
<button @click="$emit('kanyidao', obj.id)">砍一刀</button>

父组件接收

<!-- 子传父的语法 <my-test @事件名="方法"> </my-test>-->
<my-test v-for="item in goodsList" :key="item.id" :obj="item" @kanyidao="changePrice"></my-test>
methods: {
  // 方法(val) {
  //   val就是接收到的数据(子组件传递过来的)
  // }
  changePrice(id) {
    console.log(id)
    let row = this.goodsList.find(item => item.id === id)
    row.price--
  }
}

相关文章

  • vue组件之间通信

    vue 组件之间通信 vue组件之间通信方式: 1.父组件通过props向下传数据给子组件,子组件通过$emit事...

  • 【Vue】组件通信(任意通信)

    本节所需的基础知识: 【Vue】组件通信(父传子props) 【Vue】组件通信(子传父$emit) 任意组件相互...

  • vue 组件通信方式 ,父子、隔代、兄弟 三类通信,六种方法

    Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通信、兄弟组件通信,下面分别介绍每种通信方式且会说...

  • Vue相关知识点

    1、vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不...

  • Vue如何实现组件通信?

    Vue组件通信的三种情况: 父子通信 爷孙通信 兄弟通信 父子通信:父组件使用Prop向子组件传递数据,子组件通过...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

  • Vue组件通信

    Vue组件通信 Vue组件关系可分为三大类: 父子组件 兄弟组件 跨级组件, 相应的组件之间的通信也分类三大类: ...

  • vue组件间通信的一些实用方法(VUE2.x)

    vue组件间通信的一些实用方法(VUE2.x) 一、父子组件间通信 常用的父子组件通信方法,一般涉及props和$...

  • vue组件通信(传值)

    1.父子通信 1.父组件(parent.vue) 子组件(child.vue) 2.子父通信 1.子组件(chil...

  • Vue组件通信

    总体来说,Vue中组件之间的通信场景如下图: 可以将其分为父子组件通信、兄弟组件通信、跨级组件通信。 1. 自定义...

网友评论

      本文标题:Vue组件通信

      本文链接:https://www.haomeiwen.com/subject/yazetjtx.html