Vue间的组件通信:props(父向子传递)、子向父的通信:$emit详解

通常一个单页应用会以一棵嵌套的组件树的形式来组织:

  • 页面首先分成了顶部导航、左侧内容区、右侧边栏三部分

  • 左侧内容区又分为上下两个组件

  • 右侧边栏中又包含了3个子组件

各个组件之间以嵌套的关系组合在一起,那么这个时候不可避免的会有组件间通信的需求。

先上代码:

描述:局部子组件能够显示父组件的title“玉树临风,潇洒倜傥”;当点击“点我呀”按钮,子父组件同时改变num值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app">
        <h1>我也有{{num}}位妹子迷恋我</h1>
        <hello :title="title" :num1="num" @add="add"></hello>
    </div>
</body>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
    const hello1 = {
        template:"<div>" +
        "<button @click='incr'>点我呀</button><h1>大家好,我是{{name}}。" +
        "{{title}},有{{num1}}位妹子迷恋我,</h1></div>",
        data(){
            return {
                name: "力宏"
            }
        },
        //props: ['title1', "num1"]
        props: {
            title: {
                type: String,
                default: "xxxxx",
                required: true
            },
            num1: {
                type: Number
            }
        },
        methods: {
            incr(){
                this.$emit("add")
            }
        }
    };
    const vue = new Vue({
        el: "#app",
        data: {
            title: "玉树临风,风流倜傥",
            num: 100
        },
        components: {
            hello: hello1
        },
        methods: {
            add(){
                this.num++;
            }
        }
    })
</script>
</html>

原理:

props(父向子传递)规则:

  1. 父组件使用子组件时,自定义属性(属性名任意,属性值为要传递的数据)

  2. 子组件通过props接收父组件属性

子向父的通信:$emit

   vue提供了一个内置的this.$emit()函数,用来调用父组件绑定的函数

 

红色表示父向子通信,蓝色表示子向父通信,顺序1,2,3,4

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值