Vue父子组件传值通讯,超详细注释

简介: Vue父子组件传值通讯,超详细注释

话不多说直接上代码,看代码解释

父组件

1.<template>
  <div id="father">
    <h2>这是myfather组件</h2>
    <!-- 通过props实现父组件给子组件传递数据 -->
    <!-- 通过自定义属性传递数据,静态传递,动态传递都可以 -->
    <my-son uname="符鼠" :uage="age"></my-son>
    <!-- 子组件向父组件传递 v-on接收子组件的数据 -->
    <my-son @hobby="fn"></my-son>
    <h3>接受子组件的值{{ msg }}</h3>
    <my-son :msgs.sync="hobby"></my-son>
    <h3>接受子组件的值{{ hobby }}</h3>
  </div>
</template>
<script>
// 导入子组件
import MySon from "./MySon";
export default {
  components: {
    MySon,
  },
  data() {
    return {
      age: 22,
      msg: "",
      hobby:''
    };
  },
  methods: {
    fn(v) {
      this.msg = v;
    },
  },
};
</script>

子组件

<template>
  <div>
    <h2>这是mySon组件</h2>
    <h4>姓名{{uname}}</h4>
    <h4>年龄{{uage}}</h4>
    <!-- 子传父 -->
    <button @click="biu">emit传递数据</button>
    <button @click="fashe">.sycn传递数据</button>
  </div>
</template>
<script>
export default {
  // props父传子,子组件这边做限定
  props:{
    uname:String,
    uage:Number
    //对象或数组要这样写
    //titles:{
     //   type:array,
     //   default(){
      //      return []
      //  }
   // }
  },
  methods: {
    // 定义方法
    biu(){//子传父
    // 发射事件,携带的数据
      this.$emit('hobby','$emit发送过来的')
    },
    fashe(){
      // 子组件触发事件
      // .sync:将时间名换成update:hobby
      // update是固定写法
      // hobby要修改状态的名称,可以不和传入的状态名字最对应
    // <my-son :msgs.sync="hobby"></my-son>
    // 但要注意:必须在事件名称上加上update前缀
      this.$emit('update:msgs','我是来自。sycn修改的值')
    }
  },
}
</script>

最后注意:

Vue中的 data 必须是个函数,因为当 data函数时,组件实例化的时候这个函数将会被调用,返回一个对象,计算机会给这个对象分配一个内存地址,实例化几次就分配几个内存地址,他们的地址都不一样,所以每个组件中的数据才不会相互干扰,

相关文章
|
2天前
|
JavaScript
理解 Vue 的 setup 应用程序钩子
【10月更文挑战第3天】`setup` 函数是 Vue 3 中的新组件选项,在组件创建前调用,作为初始化逻辑的入口。它接收 `props` 和 `context` 两个参数,内部定义的变量和函数需通过 `return` 暴露给模板。`props` 包含父组件传入的属性,`context` 包含组件上下文信息。`setup` 可替代 `beforeCreate` 和 `created` 钩子,并提供类似 `data`、`computed` 和 `methods` 的功能,支持逻辑复用和 TypeScript 类型定义。
20 11
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
14 4
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【51.路由懒加载】
vue尚品汇商城项目-day07【51.路由懒加载】
15 4
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
14 2
|
JavaScript
Vue的非父子组件之间传值
全局事件总线 一种组件间通信的方式,适用于任意组件间通信
|
缓存 JavaScript 前端开发
Vue Props、Slot、v-once、非父子组件间的传值....
Vue Props、Slot、v-once、非父子组件间的传值....
74 0
|
JavaScript
Vue中父子组件传值
先在⽗组件中给⼦组件的⾃定义属性绑定⼀个⽗组件的变量
|
JavaScript
vue 组件传值
vue 组件传值
75 0
|
JavaScript
vue父子组件传值
vue父子组件传值
|
JavaScript
vue兄弟组件传值 方便快捷
vue兄弟组件传值 方便快捷
下一篇
无影云桌面