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

2:Vue.js 父子组件通信:让你的组件“说话”

上一篇我们聊了如何用 Vue.js 创建一个简单的组件,这次咱们再往前走一步,讲讲 Vue.js 的父子组件通信。组件开发里,最重要的就是让组件之间能够“说话”,数据能流通起来。废话不多说,直接开干!


父组件传数据给子组件

1. 父组件用 props 给子组件传值

在上一篇的按钮组件基础上,我们稍微改进下。假设我们有一个表单组件 MyForm.vue,里面有两个按钮,一个提交,一个重置:

父组件代码
<template>
  <div>
    <h3>请填写表单</h3>
    <input type="text" placeholder="输入内容" v-model="inputValue" />
    <MyButton :label="'提交'" :type="'primary'" @click="handleSubmit" />
    <MyButton :label="'重置'" :type="'secondary'" @click="handleReset" />
  </div>
</template>

<script>
import MyButton from './MyButton.vue';

export default {
  components: {
    MyButton,
  },
  data() {
    return {
      inputValue: '',
    };
  },
  methods: {
    handleSubmit() {
      alert(`提交内容:${this.inputValue}`);
    },
    handleReset() {
      this.inputValue = '';
    },
  },
};
</script>

亮点解释:

  1. props 传值MyButtonlabeltype 控制按钮显示的内容和样式。
  2. 事件绑定:父组件用 @click 把点击事件传给子组件,子组件不需要关心逻辑。

子组件怎么传消息给父组件?

在复杂场景里,子组件也需要把自己的“想法”告诉父组件,比如一个复选框列表,用户选择了某些选项,我们得把这些选项告诉父组件。

2. 子组件用 emit 通知父组件

我们来改造下按钮组件,让它在点击时通知父组件“我被点了!”。

子组件代码
<template>
  <button :class="buttonClass" @click="notifyParent">{{ label }}</button>
</template>

<script>
export default {
  props: ['label', 'type'],
  methods: {
    notifyParent() {
      this.$emit('button-clicked', this.label);
    },
  },
};
</script>
父组件代码
<MyButton label="提交" @button-clicked="handleChildClick" />
<MyButton label="取消" @button-clicked="handleChildClick" />

父组件里的方法:

methods: {
  handleChildClick(label) {
    alert(`你点击了按钮:${label}`);
  },
},

亮点解释:

  1. $emit 的作用:子组件通过 $emit 触发事件,把数据传给父组件。
  2. 事件监听:父组件监听 button-clicked 事件,就能知道哪个按钮被点了。

小结

父子组件通信很简单:

        父传子用 props

        子传父用 $emit

这些小技巧能让你的组件更灵活,下次我们再聊聊更高级的通信方式,比如兄弟组件之间如何通信。敬请期待!


http://www.kler.cn/a/395564.html

相关文章:

  • element plus的表格内容自动滚动
  • 林曦词典|养生
  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_作战无人机和察打无人机图鉴
  • 《鸿蒙生态:开发者的机遇与挑战》
  • 【LeetCode】【算法】5. 最长回文子串
  • ChatGPT登录失败的潜在原因分析
  • git命令提交项目
  • 适用比亚迪汽车生产线的RFID高频读写器
  • 为什么 Vue3 封装 Table 组件丢失 expose 方法呢?
  • 鸿蒙学习-PersistentStorage持久化存储
  • 【递归回溯与搜索算法篇】算法的镜花水月:在无尽的自我倒影中,递归步步生花
  • 深入浅出:Java 中的经典排序算法详解与实现
  • 1、C语言学习专栏介绍
  • 排序算法 -归并排序
  • 机器学习的常用算法
  • SQLite3 JDBC Java工具类
  • 网站部署到IIS后,数据库登录失败
  • 一百多块可以买到什么样的开放式耳机?虹觅Olite评测推荐
  • 机器学习—诊断偏差和方差
  • 两路组相联缓存配置
  • 【Rust调用Windows API】获取正在运行的全部进程信息
  • C++的起源与发展
  • java:接口,抽象,多态的综合小练习
  • Prompt设计技巧和高级PE
  • 微服务day07
  • 2024年9月青少年软件编程(C语言/C++)等级考试试卷(五级)