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

Vue.js props 子组件可以从父组件接收数据(通过 props)并可以向父组件发送事件(通过 $emit)

父子组件之间可以通过事件和 props 进行通信,但通常是单向的:父组件向子组件传递数据(props),子组件向父组件发送事件($emit)。

方式

  1. 父组件传递数据给子组件:

    • 使用 props
  2. 子组件通知父组件:

    • 使用 $emit 发送事件。

示例

  • 父组件:

    Vue.component('parent', {
        data() {
            return {
                message: 'Hello from Parent!'
            };
        },
        template: `<child @child-event="handleChildEvent" :message="message"></child>`,
        methods: {
            handleChildEvent(data) {
                console.log(data); // 处理子组件传来的数据
            }
        }
    });
    
  • 子组件:

    Vue.component('child', {
        props: ['message'],
        template: `<div>
            <p>{{ message }}</p>
            <button @click="notifyParent">Notify Parent</button>
        </div>`,
        methods: {
            notifyParent() {
                this.$emit('child-event', 'Message from Child!');
            }
        }
    });
    

下面是一个简单的 Vue.js 示例,展示父子组件之间的交互:

示例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>父子组件示例</title>
</head>
<body>

<div id="app">
    <parent-component></parent-component>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
<script>
    // 子组件
    Vue.component('child-component', {
        props: ['message'],
        template: `
            <div>
                <p>子组件消息: {{ message }}</p>
                <button @click="notifyParent">通知父组件</button>
            </div>
        `,
        methods: {
            notifyParent() {
                this.$emit('child-event', '来自子组件的消息!');
            }
        }
    });

    // 父组件
    Vue.component('parent-component', {
        data() {
            return {
                parentMessage: '来自父组件的消息!'
            };
        },
        template: `
            <div>
                <h1>父组件</h1>
                <child-component :message="parentMessage" @child-event="handleChildEvent"></child-component>
            </div>
        `,
        methods: {
            handleChildEvent(data) {
                alert(data); // 弹出子组件发送的消息
            }
        }
    });

    // 创建 Vue 实例
    new Vue({
        el: '#app'
    });
</script>

</body>
</html>

功能说明

  • 父组件: 显示一条消息,并将其传递给子组件。
  • 子组件: 接收父组件的消息,并提供一个按钮,点击后通过 $emit 触发事件,将消息传回父组件。
  • 事件处理: 父组件处理子组件的事件,弹出一个提示框显示消息。

http://www.kler.cn/news/318217.html

相关文章:

  • 力扣206.反转链表
  • 24/9/24 算法笔记 超参数优化算法
  • 模型验证 — 交叉验证Cross Validation的方法
  • 大数据新视界 --大数据大厂之算法在大数据中的核心作用:提升效率与智能决策
  • 【linux】file命令
  • 数据篇| 关于Selenium反爬杂谈
  • Python3将Excel数据转换为文本文件
  • 【鸿蒙 HarmonyOS NEXT】组件嵌套滚动:nestedScroll
  • 【html】基础(二)
  • 量化交易----数据透视表----融资融券优惠代码
  • 响应式布局-媒体查询父级布局容器
  • spring boot导入多个配置文件
  • #C++ enum枚举
  • Qt/C++ 多线程同步机制详解及应用
  • Shiro-550—漏洞分析(CVE-2016-4437)
  • 详解QT插件机制
  • ARM/Linux嵌入式面经(三三):大疆
  • zabbix email 告警
  • [大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用
  • Invalid Executable The executable contains bitcode
  • 报错error: RPC failed,curl 16 Error in the HTTP2 framing layer解决方法
  • 自动化学习3:日志记录及测试报告的生成--自动化框架搭建
  • 数据库课程 CMU15-445 2023 Fall Project-2 Extendible Hash Index
  • WebAssembly (Wasm) 与 JavaScript 字符串交互
  • shardingjdbc分库分表原理
  • 实战16-RVP定义完成适配
  • rocky9.2的lvs的NAT模式下的基本使用的详细示例
  • SpringBoot使用@Async注解,实现异步任务
  • 002.k8s(Kubernetes)一小时快速入门(先看docker30分钟)
  • WPF经典面试题全集