vue--父子组件的传值

什么是父子组件?

组件中引入组件,被引入的组件就是子组件。例如在 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 来进行接收参数

注意:父组件给子组件传值的时候,尽量不要传递子组件里面已经有的参数。

转载于:https://www.cnblogs.com/e0yu/p/9801127.html

你可能感兴趣的:(vue--父子组件的传值)