什么是父子组件?
组件中引入组件,被引入的组件就是子组件。例如在 Hello.vue 组件中引入 Header.vue 组件,那么 Hello.vue 就是父组件,Header.vue就是子组件。
一、父组件向子组件传值
Hello.vue
<template> <div id="Header"> {{msg}} <v-header :title="title" :msg="msg">v-header> div> template> <script> import Header from './Header.vue'; export default { name: 'Header', data () { return { msg: 'Hello模块', title:'我是Hello父组件里面的title' } }, methods:{ }, components:{ 'v-header':Header } } script>
子组件:header.vue 中使用 props 来进行接受参数:
<template> <div id="Header"> <p>我是一个头部组件----{{title}}-----{{msg}}p> div> template> <script> export default { name: 'HelloWorld', data () { return {} }, props:['title','msg'] } script>
二、父组件向子组件传递方法
Hello.vue
<template> <div id="Header"> {{msg}} <v-header :title="title" :msg="msg" :run='run'>v-header> div> template> <script> import Header from './Header.vue'; export default { name: 'Header', data () { return { msg: 'Hello模块', title:'我是Hello父组件里面的title' } }, methods:{ run(){ alert('我是Hello组件里面的hello方法'); } }, components:{ 'v-header':Header } } script>
Header.vue 同样还是用 props 来进行接受:
<template> <div id="Header"> <p>我是一个头部组件----{{title}}-----{{msg}}p> <input type="button" value="调用父组件的方法" @click="run()"> div> template> <script> export default { name: 'HelloWorld', data () { return {} }, props:['title','msg','run'] // 接受run 方法 } script>
三、父组件向子组件传递自己(this传递的就是自己)
<template> <div id="Header"> {{msg}} <v-header :title="title" :msg="msg" :run='run' :hello="this">v-header> div> template> <script> import Header from './Header.vue'; export default { name: 'Header', data () { return { msg: 'Hello模块', title:'我是Hello父组件里面的title' } }, methods:{ run(){ alert('我是Hello组件里面的run方法'); } }, components:{ 'v-header':Header } } script>
Header.vue组件的接受 hello
<template> <div id="Header"> <p>我是一个头部组件----{{title}}-----{{msg}}p> <input type="button" value="调用父组件的方法" @click="run()"> <input type="button" value="调用父组件的属性和方法" @click="getParent()"> div> template> <script> export default { name: 'HelloWorld', data () { return {} }, methods:{ getParent(){ alert(this.title);//这里调用的传递过来的title alert(this.hello.title);//这里调用的就是传递过来的hello组件的方法 this.run();//调用传递过来的方法 this.hello.run();// 调用传递过来的hello组件的的run方法 } }, props:['title','msg','run','hello'] // 接受 hello 组件 } script>
总结:
父组件给子组件传值
1、父组件调用子组件的时候,绑定动态属性
2、子组件里面可以通过 props 来进行接收参数
注意:父组件给子组件传值的时候,尽量不要传递子组件里面已经有的参数。