前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue组件之间传值

Vue组件之间传值

作者头像
wade
发布2020-04-24 17:07:52
1.8K0
发布2020-04-24 17:07:52
举报
文章被收录于专栏:coding个人笔记coding个人笔记
基于现在都是模块化开发,vue开发过程中组件之间传值是必不可少的,传值的方法有很多,今天整理一些组件之间传值的方法。

Props:

这个方法应该是最常用的,父组件通过bind指令传给子组件,子组件通过跟data同级的props数组接收。

父组件:<model :msg ="msg"></model>

子组件:props: ['msg']

然后子组件就可以使用msg这个值了。

$parent:

子组件修改父组件数据,这要在props的基础上才能使用,子组件修改父组件直接赋值会报错,使用this.$parent.msg = ‘修改父组件’;子组件就可以修改父组件的数据。

$emit:

也是很常见的放,子组件通过方法传递参数给父组件。

父组件:

代码语言:javascript
复制
<model @btn="btn"></model>
btn(val){
    console.log(val);
}

子组件:this.$emit(‘btn’, ‘我是传递给父组件方法的参数’);

ref:

父组件:<model ref="headcar"></model>

父组件调用:this.$refs.headcar

父组件通过$refs调用子组件的方法和属性。

.sync修饰符:

父组件:

<model :msg.sync="msg"></model> <p>{{msg}}</p>

子组件:

<input type="text" v-model="index">

watch:{ index(val){ this.$emit('update:msg', val) } },

这个方法用的比较少,因为parent和emit调用方法就能实现了。

Vuex全局状态管理器:

这个是vue的一个状态管理模式,这个就不多讲了,不过我们说的是组件之间传值,虽然vuex可以实现,但是并不符合数据共享的概念,并不推荐。

attrs 和 listeners:

这两个一个是传递数据,一个是调用方法回传数据。跨组件之间传递数据使用这两个属性非常有用。接下来我会用四个组件,结构如下:

A组件:<model1 :msg="msg" @btn="btn" :tre="tre"></model1>

B组件:<model2 v-bind="

C组件:<model3 v-bind="

D组件:{{msg}}this.$emit("btn", '我是第N个组件');

简单说attrs是传递数据,listeners是传递方法,通过v-bind和v-on指令跨组件传递数据(实践不能简写),方法在每个组件之间都能调用。而attrs的数据要用props获取,但是要注意,要是B组件props: [‘msg’],在B组件可以使用msg数据,但是C和D组件就无法获取msg数据,等于被拦截了。

Provide和inject

父组件中通过provider来提供变量,然后在子组件中通过inject来注入变量。

父组件:

provide(){ return { all: this.msg, } },

这边通过跟data一样返回,主要是为了可以调用当前的数据,直接用json格式只能写死数据。

在父组件生命周期内的任何子组件:

inject: ['all']

然后就可以调用这个数据了。这边要注意一点,想要响应式的改变各个子组件的数据,msg想要是一个对象,否则子组件不会动态响应all这个数据。使用provide和inject的时候,要注意,因为这跟props不一样,不是局限于从当前父组件获取的,所以在非常多组件之间调用的时候,不利于维护。

Vue组件通信大概就这几个,当然,要是使用JavaScript的方法,比如全局绑定在某个方法或者属性,本地缓存等也是可以的。不过大部分看起来还是基于props和emit。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 coding个人笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档