1.父子组件之间的传值 1)父向子传递: 父组件通过v-bind绑定一个变量,子组件通过prop接收这个变量
父组件
<template> <div> <m-child :message="'Parent message'" ></m-child> </div> </template> <script> // 引入子组件 import MChild from '@/components/Child' export default { data () { return { message: '' } }, components: { MChild, },子组件
<template> <div> <h1>{{message}}</h1> </div> </template> <script> export default { // 要接受父组件传递的参数 props: { message: { type: String, default: '' }, },2)子向父传递: 子组件在函数内发起$emit,传递函数名以及参数,父组件在子组件的身上设置v-on传递过来的函数名,并调用自己的函数
子组件
<template> <div> <button @click="takeMsg"></button> </div> </template> export default { methods: { takeMsg() { this.$emit("takeMsg", "这是子组件传递的值"); } }, }父组件
<template> <div> <h1>{{message}}</h1> <m-child @takeMsg='takeMsg'></m-child> </div> </template> import MChild from '@/components/Child' export default { components: { MChild, }, data(){ return { message: '' } }, methods: { takeMsg(value) { this.message=value; } }, }2.非父子组件之间的传递 1)Vuex 2)建立一个公共的js文件,专门用来传递消息
message.js
import Vue from 'vue' export default new Vue在需要传递消息的地⽅引⼊这个文件,并通过message .$emit传递
import message from './util/message' methods: { passMsg () { message.$emit('message', 'i am a message') } },在需要接收消息的地方使用message .$on接收消息
mounted () { message.$on('message', (value) => { this.childMessage = value });