目录
1、provide/inject有什么用?
常用的父子组件通信方式都是父组件绑定要传递给子组件的数据,子组件通过props属性接收,一旦组件层级变多时,采用这种方式一级一级传递值非常麻烦,而且代码可读性不高,不便后期维护。
vue提供了provide和inject帮助我们解决多层次嵌套嵌套通信问题。在provide中指定要传递给子孙组件的数据,子孙组件通过inject注入祖父组件传递过来的数据。
使用场景:由于vue有$parent属性可以让子组件访问父组件。但孙组件想要访问祖先组件就比较困难。通过provide/inject可以轻松实现跨级访问祖先组件的数据
2、provide/inject使用方式
provide:是一个对象 / 返回对象的函数。
里面是属性和属性值。
注意:子孙层的provide会掩盖祖父层provide中相同key的属性值
inject:一个字符串数组,或者是一个对象。
属性值可以是一个对象,包含from和default默认值,from是在可用的注入内容中搜索用的 key (字符串或 Symbol),意思就是祖父多层provide提供了很多数据,from属性指定取哪一个key;
default指定默认值。
具体用法:
父组件
<template>
<div>
</div>
</template>
<script>
export default {
components: {
MergeTipDialog,
BreakNetTip
},
data () {
return {
isShow: false,
isRouterAlive: true
},
// 父组件中返回要传给下级的数据 可以使函数,也可以是data中的数据
provide () {
return {
reload: this.reload isShow:this.isShow
}
},
methods: {
reload () {
this.isRouterAlive = false
this.$nextTick(() => {
this.isRouterAlive = true
})
}
}
}
</script>
子孙
<template>
<popup-assign
:id="id"
@success="successHandle"
>
<div class="confirm-d-tit"><span class="gray-small-btn">{{ name }}</span></div>
<strong>将被分配给</strong>
<a
slot="reference"
class="unite-btn"
>
指派
</a>
</popup-assign>
</template>
<script>
import PopupAssign from '../PopupAssign'
export default {
//引用vue reload方法 内容 isShow
inject: ['reload','isShow'],
components: {
PopupAssign
},
methods: {
async successHandle () {
this.reload()
}
}
}
</script>
vue3.0用法
父组件
子组件
总结
到此这篇关于vue2.0/3.0中provide和inject用法的文章就介绍到这了,更多相关vue中provide和inject用法内容请搜索华域联盟以前的文章或继续浏览下面的相关文章希望大家以后多多支持华域联盟!
您可能感兴趣的文章:
- vue2.0结合DataTable插件实现表格动态刷新的方法详解
- vue3 与 vue2 优点对比汇总
- Vue2.x配置路由导航守卫实现用户登录和退出
- vue2.x的深入学习–关于h函数的说明
- Vue2.x响应式简单讲解及示例
- Vue3对比Vue2的优点总结
- vue2实现provide inject传递响应式
- vue2.0/3.0的响应式原理及区别浅析
- vue2.x 从vue.config.js配置到项目优化
- 手写Vue2.0 数据劫持的示例
- Vue2.x-使用防抖以及节流的示例
- 源码揭秘为什么 Vue2 this 能够直接获取到 data 和 methods
声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。



评论(0)