props 用于在子组件中接收父组件传递的数据。

//父组件传递 name 和 age 为"zhangsan"、"20"
<Child name="zhangsan" age="20"></Child>
 
//子组件接受 name 和 age
export default {
    props: ['name', 'age']
}

emit 用于子组件调用父组件中的方法和传值。父组件引入了 Child 子组件,并在子组件上定义了一个”sayHello”方法,当触发子组件中的 click 事件时,会通过 this.$emit(‘sayHello’) 调用父组件中的”sayHello”方法。

<template>
    <div>
        <h1>父组件</h1>
        <Child @sayHello="sayHello"></Child>
    </div>
</template>

<script>
import Child from "./Child.vue";
export default {
    components: {
        Child,
    },
    methods: {
        sayHello() {
            console.log('hello');
        }
    }
};
</script>
<template>
    <div>
        <h2>子组件</h2>
        <!-- 先调用自己的方法,在自己的方法中触发父亲的自定义事件 -->
        <button @click="sayHello">sayHello</button>
    </div>
</template>

<script>
export default {
    methods: {
        sayHello() {
            this.$emit('sayHello');
        }
    }
};
</script>