-
2021-12-14 01:11:26
传参
1.vue的父子传参
父传递参数
<Son name='xiaoma' :age="18" />
子组件
<script> export default { props: ['name', 'age'], // 或者 规定类型写法 props: { name: {type: String}, age:{type: Number} } } </script>
2.vue的子父传参
子组件
<button v-on:click="$emit('show','hello 马先生')">按钮</button>
父组件
<son @show="nihao"/> <script> import Son from "../components/Son.vue" export default { components:{ Son }, methods: { nihao(msg) { console.log(msg); } }, } </script>
流程解析:
子组件中, 点击按钮. $emit(事件名, 参数) 触发 show 事件绑定的方法, 传入参数.
show 方法在 父组件中定义. @show=“sayHi” , 子的 show 方法绑定了 父的 sayHi
子中的参数通过 show 事件绑定的 sayHi 方法传入父中
vue的兄弟传参
首先你要明白兄弟组件间无法直接通信, 通信方式有两种: 子传父 + 父传子 和 事件车
子传父 + 父传子: 此方式效率较低, 不推荐
依赖共同的父组件进行信息的转达.
假设 A 和 B 组件为兄弟组件, A 要向 B 中传值:
父组件 通过 A 的事件方式传递 父的函数给A
A组件 通过 $emit() 方式 触发父传入的事件, 并传入参数
父组件 收到A 的参数之后, 再通过修改 传递给 B组件 的属性. 实现B的属性修改
总结
父和A组件, 通过子父传参进行信息交互.
父和B组件, 通过父子传参进行信息的交互.
事件车: 此方式效率高, 推荐使用.
示例参考:Vue 事件车_爱学习的小发发的博客-CSDN博客_vue事件车
向 Vue 的原型中, 注入一个 专门负责监听事件的 Vue 实例 main.js
Vue.prototype.EventBus = new Vue();
A 组件中注册 引入 EventBus.js 模块, 并向其中注册 事件
this.EventBus.$emit('change', msg)
B 组件中注册 change 事件的监听
this.EventBus.$on('change', changeMsg(msg)) methods:{ changeMsg(msg){ //此处能收到 msg ,A组件传入的值 } }
更多相关内容 -
vue 父子组件传参
2022-03-27 20:14:50vue 父子组件传参1.父传子
父组件里面获取的一些属性,子组件也想使用。
父组件在使用子组件是给调用的子组件设置字段并把要传的值赋值过去
<template> <div> <!-- 这里是父组件 --> <h1>这里是父组件</h1> <B :msg="msgs" :arr="items"></B> </div> </template> <script> import B from './B.vue' export default { components: { B }, data() { return { msgs:'父组件的内容被子组件调用', items:[ {id:1,name:'语文'}, {id:2,name:'数学'}, {id:3,name:'生物'}, {id:4,name:'化学'} ] } }, } </script> <style lang="scss" scoped> </style>
这里的子组件在data里面定义props来接受传过来的值
拿到的数据,可以直接遍历展示
<template> <div> <!-- 这里是子组件 --> <h1>这里是子组件</h1> <h3>{{msg}}</h3> <h3 v-for="item in arr" :key="item.id"> {{item.id}},,,,{{item.name}} </h3> </div> </template> <script> export default { props:['msg',"arr"], } </script> <style lang="scss" scoped> </style>
2.子传父
子传父就是子组件的方法或者是一些数据父组件想要使用
先说数据如何传递。这里子组件要使用$emit来传递,并且传递过去的方法名字要跟调用子组件时用的方法名字一致 这里的是showname。
<template> <div> <!-- 这里是父组件 --> <h1>这里是父组件</h1> <h3>你叫什么??</h3> <h3>{{this.name}}</h3> <!-- 引用子组件 --> <B @showname='showname'/> </div> </template> <script> import B from './B.vue' export default { components: { B }, data() { return { name:'' } }, methods: { showname(newval) { console.log(newval); this.name = newval } }, } </script> <style lang="scss" scoped> </style>
<template> <div> <!-- 这里是子组件 --> <h1>这里是子组件</h1> <button @click="go">点击传递</button> </div> </template> <script> export default { data() { return { name: '小明' } }, methods: { go() { this.$emit('showname',this.name) } }, } </script> <style lang="scss" scoped> </style>
接下来就是方法,也就是在父组件使用子组件的方法
先在子组件里面定义一个方法 这里用到了vant组件库的Toast轻提示
https://vant-contrib.gitee.io/vant/v2/#/zh-CN/toast
<template> <div> <!-- 这里是子组件 --> <h1>这里是子组件</h1> </div> </template> <script> import { Toast } from 'vant'; export default { data() { return { } }, methods: { // 这里用了vant组件的Toast提示 loading() { Toast.loading({ message: '加载中...', forbidClick: true, }); }, }, } </script> <style lang="scss" scoped> </style>
然后在父组件调用子组件的方法
注意ref定义的值要和下面方法里面$refs后面的一样
<template> <div> <!-- 这里是父组件 --> <h1>这里是父组件</h1> <!-- 点击调用子组件的loading方法 --> <button @click="showloading">父组件点击</button> <B ref="loading"/> </div> </template> <script> import B from './B.vue' export default { components: { B }, methods: { showloading(){ this.$refs.loading.loading() } }, } </script> <style lang="scss" scoped> </style>
-
VUE组件传参
2022-03-11 15:12:22如果父传子有很多值,那么在子组件需要定义多个props解决:attrs获取子传父中未在 props 定义的值 listeners场景:子组件需要调用父组件的方法解决:父组件的方法可以通过v−on="listeners" 传入内部组件——在创建更高...子组件调用父组件的事件
如果父传子有很多值,那么在子组件需要定义多个props解决:attrs获取子传父中未在 props 定义的值
listeners场景:子组件需要调用父组件的方法解决:父组件的方法可以通过v−on="listeners" 传入内部组件——在创建更高层次的组件时非常有用
子组件调用父组件的方法2
parent:父实例children:子实例
//父组件 mounted(){ console.log(this.$children) //可以拿到 一级子组件的属性和方法 //所以就可以直接改变 data,或者调用 methods 方法 } //子组件 mounted(){ console.log(this.$parent) //可以拿到 parent 的属性和方法 }
children和parent 并不保证顺序,也不是响应式的 只能拿到一级父组件和子组件
mounted(){
console.log(this.$parent) //可以拿到 parent 的属性和方法
}$refs
// 父组件 <home ref="home"/> mounted(){ console.log(this.$refs.home) //即可拿到子组件的实例,就可以直接操作 data 和 methods }
$root
// 父组件 mounted(){ console.log(this.$root) //获取根实例,最后所有组件都是挂载到根实例上 console.log(this.$root.$children[0]) //获取根实例的一级子组件 console.log(this.$root.$children[0].$children[0]) //获取根实例的二级子组件 }
.sync
-
Vue 父子组件传参
2022-02-15 01:29:17父传子: 用属性props 向下传递 ; 字传父: 利用事件向上传递 ,父组件监听这个事件 子->父 父需要监听cry这个事件 然后用f2(data){ } data就是传递的参数父传子: 用属性props 向下传递 ;
字传父: 利用事件向上传递 ,父组件监听这个事件子->父 父需要监听cry这个事件 然后用f2(data){ } data就是传递的参数
-
vue父子组件传参
2021-12-03 09:04:48一、常用的父和子传参 父传子 父组件 // 父组件里的子组件 <LesseeDialog ref="lesseeDialog" :paramsObj="defaultProps" @dialogDetermine="whichDetermine"></LesseeDialog> // 引入子组件 ... -
Vue父子组件传参
2022-03-07 14:57:411.3.1在父组件中引入子组件 // 父组件中引入子组件 import accidentNewDialog from './accidentNewDialog.vue' 1.3.1在父组件中注册并使用子组件 // 父组件中注册子组件 components: { accidentNewDialog }, // ... -
vue组件传参
2021-01-08 10:21:11父组件传参 <create-time-count :key="createTimeTimer" :test="testData"/> data() { return { //testData: 12312312,//number // testData: '字符串',//string // testData: {obj: '对象'},//object /... -
Vue父子组件传参的方式:props
2022-04-22 13:19:34Vue父子组件传参的方式:propsprops props 在Vue中我们可以通过props来进行父子之间的传参 比如我们有A,B两个组件, A是B的父组件, B组件想用A组件里面的数据可以通过如下的方式: <!-- 父组件 --> <template... -
vue父子组件传参的4种方式
2021-01-05 18:40:29父组件向子组件传参 父组件直接绑定在子组件的标签上,子组件通过props接收传递过来的参数。 父组件 <template> <i-activities-item :content="content" /> </template> <script> ... -
Vue3组件传参
2020-10-13 16:26:55没啥好说的,淦就完事了,按照自己的认知简单的整理了一下vue3的组件传参…… 一、父子传值 1.emit 代码如下 (示例): <template> <div> 子组件: <button @click="childEmit">传值给父组件<... -
Vue 路由组件传参的 8 种方式
2021-05-25 10:40:06我们在开发单页面应用时,有时需要进入某个路由后基于参数从服务器获取数据,那么我们首先要获取路由传递过来的参数,从而完成服务器请求,所以,我们需要了解路由传参的几种方式,以下方式同 vue-router@4。... -
vue嵌套组件传参
2022-04-09 20:46:05假设我们已经了解vue组件常见的有父子组件通信,兄弟组件通信。而父子组件通信很简单,父组件会通过 props 向下传数据给子组件,当子组件有事情要告诉父组件时会通过 $emit 事件告诉父组件。那么当两个组件之间不是... -
vue父子组件传参、兄弟组件传参、页面跳转传参
2022-03-26 17:38:281、父组件向子组件传参 父组件向子组件共享数据需要使用自定义属性 // 父组件 <template> <div> // 使用子组件 <son :msg="message" :userInfo="userInfo"></son> </div> <... -
3.Vue之 组件传参处理
2020-07-28 17:27:201.在Home页使用Banner组件, Home页传参到Banner组件,实现动态数据 -
vue父组件传参子组件界面未更新
2022-04-29 21:15:56vue父组件传参子组件界面未更新前言一、遇到的问题二、问题定位和解决方式 前言 首先记录一个组件的生命周期顺序: 1.挂载(初始化相关属性) - beforeCreate - created - beforeMount - mounted 2.更新(元素... -
Vue组件传参
2021-09-24 17:23:33Vue组件传参一共有三种类型,即父向子传参,子向父传参,兄弟之间传参(只要不是父子关系就都是兄弟组件) 1.父向子传参: 父组件向子组件共享数据需要使用自定义属性----props 比如我们有父组件 Father 和 子组件 ... -
vue中组件之间的传参
2021-04-25 08:53:51(1)在src中新建一个Bus.js的文件,然后导出一个空的vue实例 (2)在传输数据的一方引入Bus.js 然后通过Bus.e m i t ( “ 事 件 名 ” , " 参 数 " ) 来 来 派 发 事 件 , 数 据 是 以 emit(“事件名”,“参数”)... -
Vue组件传参(详细)
2022-04-26 17:41:53Vue组件传参 提示:小伙伴们,每天都要提升自己哦 文章目录Vue组件传参前言一、父子组件传参二、子父组件传参二、其他组件传参1.引入库2.读入数据总结 前言 在学习父子组件传参之前,你应该先学习组件注册。 ... -
vue-组件传参(父子,兄弟,组件跨级)
2020-06-23 18:29:11一、父子组件之间的传参 1.父传子: 父组件向子组件传入一个参数 注意:父组件传入到子组件中的数据不允许子组件修改:单向数据流 如果需要能修改的话,那么那个数据应该是复杂数据类型,例如Data、function、Array... -
Vue 组件传参总结
2021-12-03 13:31:22Vue 组件传参的背景 vue的特点之一是组件化开发,那么问题来了,组件中的数据和方法都是独立的,我们如何进行组件之间的交互呢。这个时候就要用到组件传参了 传参的方式 父子组件 兄弟组件 隔代组件 props 父... -
Vue进阶 - 组件传参
2021-12-30 16:38:00父子组件传参 父传子 一般都是需要传动态的值,所以需要v-bind绑定,当然,传递的值也可以是数字、对象、数组等等 子组件中接受父页面传过来的值,有几点需要了解: 组件实例的作用域是孤立的 子组件要显式的用... -
Vue 兄弟组件传参
2020-11-18 16:35:59兄弟组件使用 eventBus 实现传值 第一步:先创建js文件,位置随便放 import Vue from 'vue' export default new Vue() 第二步:兄弟组件,引入js,然后在methods里边定义一个函数 import '@/eventBus.js' methods:... -
vue组件传参的几种方式
2022-03-06 22:05:09一.父子组件传参 父组件传给子组件: 父组件: 子组件: 子组件传给父组件: 子组件: 父组件: 兄弟组件传参: -
vue3.0父子组件传参
2022-02-11 11:15:03export default { props: ["mess"], //需要props声明才能在setup收到参数 setup(props) { console.log(props.mess); }, }; export default { emits: ["xd"], //需要emits声明... context.emit("xd", "子组件的值 -
Vue 子组件向父组件传参
2021-10-09 16:04:12子组件向父组件传参 子组件向父组件传参 主要靠两个 : $emit方法将子组件数据传递给父组件 父组件 用$on 接受 在传参时,我们最好创建除了父子组件之外的第三个公共文件-----bus.js import Vue from 'vue' ... -
vue组件传参--简单运用
2022-01-19 10:53:44首先建立关系:父组件中做以下操作: 1、父组件中引入子组件 import Child from "@/components/Child.vue"; 2、注册组件 <script> import Child from "@/components/Child.vue";// 1、引入组件 export ... -
Vue3父子组件传参
2022-04-30 19:24:231.非语法糖能直接在setup里添加两个参数props和ctx里的emit传参 具体语法:setup(props,ctx) 1.之后使用可以通过props.xxx(xxx为父组件传递过来的属性名)进行数据的使用 2.ctx:可以直接解构赋值将emit解构出来... -
Vue组件间传参(3)---跨组件
2021-08-12 09:28:541、在爷孙组件传参时,父组件往往是不需要知道都传递了哪些参数,也不需要使用,仅仅只是作为爷孙沟通的桥梁。$attrs就可以收集上一层组件所传递的所有props,$listeners可以收集到所有需要传递的事件。 $attrs... -
vue 遍历组件传参
2020-03-08 12:50:10如果遍历调用组件,可以通过arguments获取传递过来的参数, index是遍历索引 这样可以确定是那个索引调用的组件