1.父向子进行传值
在父组件中,使用子组件的标签,并通过属性将数据传递给子组件。
在子组件中,定义props选项来接收父组件传递的数据。
父组件的数据会通过props选项传递给子组件,子组件可以直接使用这些数据。
父组件:
<template><div><child-component :message="parentMessage" /></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {data() {return {parentMessage: 'Hello from parent component',};},components: {ChildComponent,},
};
</script>
子组件:
<template><div><p>{{ message }}</p></div>
</template><script>
export default {props: {message: {type: String,required: true,},},
};
</script>
在上面的例子中,父组件通过属性:message将数据parentMessage传递给了子组件。子组件通过props选项定义了一个名为message的属性,接收父组件传递过来的数据,并在模板中进行展示。
2.子向父传值
在子组件中,通过$emit方法触发一个自定义事件,并传递要传递给父组件的数据。
在父组件中,通过v-on指令监听子组件触发的事件,并在触发时执行相应的方法,获取传递的数据。
子组件:
<template><div><button @click="sendMessage">Send Message</button></div>
</template><script>
export default {methods: {sendMessage() {this.$emit('message-sent', 'Hello from child component');},},
};
</script>
父组件:
<template><div><child-component @message-sent="handleMessage" /><p>{{ receivedMessage }}</p></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {data() {return {receivedMessage: '',};},components: {ChildComponent,},methods: {handleMessage(message) {this.receivedMessage = message;},},
};
</script>