首页 > 其他分享 >vue 父子组件传值方法总结

vue 父子组件传值方法总结

时间:2022-08-14 10:47:15浏览次数:59  
标签:传参 childrenData Vue bus vue 参数 组件 传值

1、父组件向子组件传参:

(1)父组件直接绑定在子组件的标签上,子组件通过props接收传递过来的参数。

(2)父组件主动获取所有的参数和方法

this.$refs.childrenName.(参数或方法名)

 

2、子组件向父组件传参

(1)子组件接收一个父组件传递过来的方法,将要传递给父组件的参数作为该方法的参数使用

 

父组件:

<template>

<children-com :callback="onCallback" />

</template>

methods: {

   // childrenData就是子组件传递过来的参数

onCallback(childrenData) {

this.childValue = childrenData

}

  }

 

子组件:

<template>

<button @click="onClick">点击传递向父组件传参</button>

</template>

props: {

callback: {

type: Function

}

},

data() {

    return {

dataValue: 123

};

},

methods: {

onClick() {

this.callback(dataValue)

}

}

 

(2) 、子组件向父组件传参 $emit

父组件:

<template>

<children-com @delete="onDeleteItem" />

</template>

 

methods: {

   // 当子组件触发delete事件时,父组件的该函数就会执行

onDeleteItem(childrenData) {

console.log(childrenData) // 123

}

}

 

子组件:

<template>

<button @click="onClick">点击传递向父组件传参</button>

</template>

 

props: {

callback: {

type: Function

}

},

data() {

    return {

dataValue: 123

};

},

methods: {

onClick() {

// 第一个参数为父组件绑定在子组件上的自定义事件,第二个参数为传递的参数

this.$emit('delete', dataValue)

}

}

 

(2)、非父子之间的通信,中央事件总线bus

两种方式:

  1. 新建一个bus.js文件,初始化一个空的Vue实例,作为中央总线,然后再组件引用时调用这个bus.js文件

import Vue from 'vue';

export default new Vue;

 

  1. main.js全局定义,将bus挂载到vue.prototype上

import Vue from 'vue';

Vue.prototype.bus = new Vue();

 

使用:

传值bus.$emit(‘参数名’,’data’)

接收bus.$on(‘参数名’,(data) => {})

标签:传参,childrenData,Vue,bus,vue,参数,组件,传值
From: https://www.cnblogs.com/yehx/p/16584931.html

相关文章

  • vue学习之------vite
    vue两种快速创建工程化SPA(单页面应用)项目的方法:vite:仅支持vue3;运行速度快;不是基于webpack打包vue-cli:vue2、vue3都支持;运行速度较慢;基于webpack打包 用vite创建项......
  • vue 项目中如何使用 富文本编辑
    第一步npm  i   wangeditor第二步在需要的组件中引入importWangEditorfrom"wangeditor";第三步 找到容器 <divid="editor"></div>写一个函数......
  • Spring MVC组件之HandlerMapping
    SpringMVC组件之HandlerMappingHandlerMapping概述HandlerMapping组件的作用解析一个个Request请求,并找到相应处理这个Request的Handler。Handler一般可以理解为Control......
  • VUE学习-mixin混入
    mixin混入混入(mixin)提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。组件式混入//定义一个混入对象varmyMixin={ created:function(){this.hel......
  • vue+openlayer实现地图聚合效果和撒点效果
    前言:openlayer是目前我们gis常用的一款开源的,并且反馈都特别好的软件了,像之前的ol3,风靡一时,地图实现也很简单,很实用,目前vue中使用地图也是非常多的,那么如果在......
  • vue学习之------过滤器Filters
    注:Vue3中已废弃filter过滤器常用于文本的格式化例如:helloworld>>Hello World过滤器可以用在两个地方:{{插值表达式}}和v-bind属性绑定 过滤器定义: ......
  • vue echarts 宽度100% 显示不正常
    varchartDom=document.getElementById("chartDom");varoption={};varmyChart=echarts.init(chartDom);option&&myChart.setOption(opt......
  • vuecli3+cesium开发环境搭建
    一、vue-cli3+cesium搭建步骤1、vuecreate'yourproject-name'新建你的项目2、安装cesium依赖npminstallcesium--save3、新建cesiumContainer.vue文件,src/views/......
  • VUE学习-过渡 & 动画
    过渡&动画Vue在插入、更新或者移除DOM时,提供多种不同方式的应用过渡效果。包括以下工具:在CSS过渡和动画中自动应用class在过渡钩子函数中使用JavaScript直接......
  • 自定义组件⑦插槽-微信小程序开发(二十四)
    1.什么是插槽在自定义组件的wxml结构中,可以提供一个节点(插槽),用于承载组件使用者提供的wxml结构。2.单个插槽在小程序中,默认每个自定义组件中只允许使用一个......