vue中组件传值方法

2023-12-13 03:42:17

父组件给子组件传值

一、
? ? ? 1.在子组件标签中写入父组件传递数据 向下传递prop
? ? ? 2.在子组件内声明props选项接收父组件传递的数据 props:['','','']

父组件:

<Header :msg='msg' ></Header>

子组件:

props:['msg'],

二、
? ? ? provide inject
? ? ? 1.父组件使用provide提供传递数据或者方法
? ? ? 2.子组件使用inject注入传递的数据或者方法

父组件:

provide(){
    return {
      parent:this.parent,
      parentSend:this.parentSend,
      attr:this.attr
    }
  }

子组件:

inject:['parent','parentSend'],

三、
? ? ? 事件总线 $emit 和 $on vue实例调用方法?
? ? ? 1.新建event.js?
? ? ? ? import Vue from 'vue';
? ? ? ? export default new Vue();
? ? ? 2.在父组件中使用$emit发射自定义事件同时传递参数
? ? ? import Bus from './event.js'
? ? ? Bus.$emit('自定义事件名称',传递数据)
? ? ? 3.在子组件内部使用$on监听自定义事件同时接收参数
? ? ? Bus.$on('自定义事件名称',(a,b)=>{

? ? ? })

父组件:

import Bus from './event'


Bus.$emit('toHeader',this.pMsg,'hello world')

子组件:

import Bus from '../event'

Bus.$on('toHeader',(a,b)=>{
      console.log(a,b);
      this.a = a;
      this.b = b;
    })

子组件给父组件传值

1.发射自定义事件给父组件同时传递数据
? ? ? this.$emit('toParent',this.footer);
? ? ? 2.在父组件模板中(在子组件标签上)声明自定义事件?
? ? ? <Footer @toParent='事件处理程序'></Footer>
? ? ? 事件处理程序(接收子组件传递的数据){

? ? ? }

兄弟组件传值

利用事件总线?
? ? 1.定义事件总线 新建xxx.js
? ? ? ? import Vue from 'vue';
? ? ? ? export default new Vue();
? ? 2.在一个兄弟组件中引入事件总线?
? ? ? import Bus from './event.js'
? ? ? 使用Bus.$emit('自定义事件名称',传递的数据)
? ? 3.在另一个兄弟组件中引入事件总线
? ? ? import Bus from './event.js'
? ? ? 使用Bus.$on('emit发射自定义事件名称',(a,b)=>{
? ? ? ??
? ? ? })监听发射自定义事件 同时接收数据
? ??

祖先后代组件传值/通信

provide inject

文章来源:https://blog.csdn.net/weixin_55269913/article/details/134885711
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。