当前位置: 首页 > news >正文

Vue组件(二)父组件、子组件通信/传值

一、Vue 父组件访问子组件

1.父组件获取子组件对象

通过ref引用属性访问子组件对象

定义:

 <StudentInfo :num="parentNum" ref="parentStu"></StudentInfo>

使用:

     //获取子组件信息
      console.info(this.$refs["parentStu"]);

 

2.父组件调用子组件方法

     //父组件调用子组件方法
      this.$refs["parentStu"].change();

3.父组件传值给子组件 props  (重点,可以双向绑定)

1.子组件定义

  props: {
    num: {
      type: Number,
      default: 10,
    },
  },

2.父组件使用,重点parentNum 可以实现双向绑定

    <StudentInfo :num="100"></StudentInfo>
    <StudentInfo :num="parentNum" ref="parentStu"></StudentInfo>

二、Vue 子组件访问父组件

1.获取父组件对象(重点,直接修改父组件变量,可以修改父组件页面展示)

this.$root
  //子组件获取父组件数据
      this.$root.parentNum += 10;

2.调用父组件方法

   //子组件调佣父组件 方法
      this.$root.parentChange();

3.给父组件传值

方案:1.调用子组件方法传值  2.使用props双向绑定传值

三、源码如下:

子组件:

<template>
  <div>
    <p>编号:{{ stu.id }}</p>
    <p>姓名:{{ stu.name }}</p>
    <p>测试数字:{{ num }}</p>

    <button @click="childClick">子组件按钮</button>
  </div>
</template>


<script>
export default {
  data() {
    return {
      stu: {
        id: 1,
        name: "张三丰",
      },
    };
  },
  props: {
    num: {
      type: Number,
      default: 10,
    },
  },
  methods: {
    change() {
      this.stu = {
        id: 2,
        name: "李四",
      };
    },
    //子组件事件
    childClick() {
      console.info(this);
      //子组件获取父组件数据
      this.$root.parentNum += 10;

      //子组件调佣父组件 方法
      this.$root.parentChange();
    },
  },
  mounted() {},
};
</script>

父组件:

<template>
  <div>
    <img alt="Vue logo" src="./assets/logo.png" />

    <StudentInfo :num="100"></StudentInfo>
    <StudentInfo :num="parentNum" ref="parentStu"></StudentInfo>

    <button @click="changeInfo">父组件按钮</button>

    <p>
      parentNum:{{parentNum}}
    </p>
  </div>
</template>

<script>
import StudentInfo from "./components/StudentInfo.vue";

export default {
  name: "App",
  components: {
    StudentInfo,
  },
  data() {
    return {
      parentNum: 88,
    };
  },
  methods: {
    changeInfo() {
      //获取子组件信息
      console.info(this.$refs["parentStu"]);
      //父组件调用子组件方法
      this.$refs["parentStu"].change();

      //父组件修改子组件数据
      this.parentNum = 99;
    },
    parentChange(){
      this.parentNum++;
    }
  },
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

更多:

Vue组件(一)Vue组件基础_Vue组件入门

Vue3实现复制功能_vue-clipboard3 Vu3复制插件

Vue 无法展示网络图片处理方案

相关文章:

  • SAMBA共享工具安装
  • 智慧农业系统 - 可视化大屏(Echarts)管理系统(HTTP(S)协议)物联网平台(MQTT协议)
  • 信息管理VUE毕业设计项目分享【含源码+论文】
  • 攻防比赛中蓝队常用的攻击方法
  • c++中和c语言不相同的地方
  • [前端CSS高频面试题]如何画0.5px的边框线(详解)
  • APS智能排产在电缆行业的应用
  • Java模拟抽奖。奖池有以下几个奖项:【2,1888,588,388,2888】打印出抽奖结果,要求随机且不重复。两种方法(代码和优化后的代码)
  • Ajax加强
  • 低代码治理及其必要性
  • 翻了ConcurrentHashMap1.7 和1.8的源码,我总结了它们的主要区别。
  • 信息管理毕业设计题目合集【含源码+论文】
  • BOM批量查询
  • 基于FPGA的数字滤波器fir
  • Js手写面试题5-Promise
  • $translatePartialLoader加载失败及解决方式
  • @jsonView过滤属性
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【译】理解JavaScript:new 关键字
  • CSS中外联样式表代表的含义
  • leetcode-27. Remove Element
  • Magento 1.x 中文订单打印乱码
  • ng6--错误信息小结(持续更新)
  • Object.assign方法不能实现深复制
  • Python socket服务器端、客户端传送信息
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 构建工具 - 收藏集 - 掘金
  • 警报:线上事故之CountDownLatch的威力
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 学习HTTP相关知识笔记
  • 与 ConTeXt MkIV 官方文档的接驳
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # centos7下FFmpeg环境部署记录
  • #stm32驱动外设模块总结w5500模块
  • #Ubuntu(修改root信息)
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (4)logging(日志模块)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)斐波那契Fabonacci函数
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (汇总)os模块以及shutil模块对文件的操作
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (正则)提取页面里的img标签
  • (转)http协议
  • (转载)深入super,看Python如何解决钻石继承难题
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net FrameWork简介,数组,枚举
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件