vue中组件之间的传值

按照对象分类:

一、父子组件之间的传值

1.使用props和$emit

2.在引入的子组件中使用ref,通过this.$refs.xxx.方法/值来获取子组件中的方法或者值

3.子组件中使用this.$parent来获取父组件中的值或者方法

4.父组件中使用this.$children来获取子组件中的值或者方法

tip:方法3和方法4有时候会失效,所以建议使用方法2

 

二、兄弟组件中的传值

1.使用eventBus作为中间件,然后使用$emit去抛出事件,使用$on去监听事件

这里要注意一些事项:a.bus.$emit在beforeDestroy中去触发

b.bus.$on 在 created或者mounted中使用,且回调函数使用箭头函数,解决this指向问题

c.在beforeDestroy中使用bus.$off去销毁事件

d.比较特殊的是如果该组件存在缓存(路由跳转的时候使用了<keep-alive>来包裹<router-view>,此时该组件跳转的时候是不会触发beforeDestroy和destroy,该组件只会触发created和mounted,但是它又离去的时候会触发deactivated,返回的时候会触发active,此时就将bus.$emit写在deactivated中)

tip:我在网上还看到如果是这种情况的话也可以将bus.$emit写在$nextTick里面去触发,尝试过,结果失败。这里只是当做一个参考。

详细参考点击链接

 

三、多级组件嵌套传值

1.使用 v-bind = "$attrs" v-on = "$listeners"

详情参考点击链接

2.使用provide和inject

 

四、多个组件重复使用,整个项目都需要的

1.使用vuex

 

 

转载于:https://www.cnblogs.com/lanhuo666/p/11273128.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值