vue 初步了解provide/inject

provider/inject:简单的来说就是在父组件中通过provider来提供变量,然后在子组件中通过inject来注入变量。

需要注意的是 provide / inject这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。

(这里不论子组件有多深,只要调用了inject那么就可以注入provider中的数据。而不是局限于只能从当前父组件的prop属性来获取数据。)

eg:

父组件中提供
  provide() {
    return {
      map_nodeObj: { map_node: this.obj }
      // 提示:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。
    }
  },
子组件中引入
  inject: {
    map_nodeObj: {
      default: () => {
        return {map_node: ‘0‘}
      }
    }
  },
使用: this.map_nodeObj.map_node

运行顺序:

data
provide
created  // 在这个阶段$el还未生成,在这先处理privide的逻辑,子孙组件才可以取到inject的值
mounted
...

provide/inject的缺点:

这么做也是有明显的缺点的,在任意层级都能访问导致数据追踪比较困难,不知道是哪一个层级声明了这个或者不知道哪一层级或若干个层级使用了,因此这个属性通常并不建议使用能用vuex的使用vuex,不能用的多传参几层,但是在做组件库开发时,不对vuex进行依赖,且不知道用户使用环境的情况下可以很好的使用

原文地址:https://www.cnblogs.com/feijiediyimei/p/10619472.html

时间: 2024-11-08 20:20:25

vue 初步了解provide/inject的相关文章

vue中使用provide和inject刷新当前路由(页面)

1.场景 在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求. 2.遇到的问题 1. 用vue-router重新路由到当前页面,页面是不进行刷新的 2.采用window.reload(),或者router.go(0)刷新时,整个浏览器进行了重新加载,闪烁,体验不好 3.解决方法 provide / inject 组合 作用:允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效. App.vue TagViewBar.vue

URL不变的情况下,最实用的vue刷新当前页面,provide / inject 组合 方式实现vue页面刷新

原文:https://blog.csdn.net/Dream_xun/article/details/83024487 其他参考:https://blog.csdn.net/liyunkun888/article/details/89022149   由于 router-view 是复用的,单纯的改变 id 的值并不会刷新 router-view 这是一种最实用的vue刷新当前页面,其他方式一般会出现一个瞬间的空白页面,体验不好,相当于按ctrl+F5 强制刷新那种方式:provide / in

vue 父组件如何给子组件的组件传值 provide inject

一般情况下我们父子之间的传值用的是props,这个就不多说了,但是如果想让父给子组件的组件传值怎么办呢,这里我们就可以用到 provide 和 inject(依赖注入) provide/inject需要一起使用,我们可以从父组件的provide传值,子组件或者孙组件,就可以用inject来接受子组件的provide属性值 具体的可以看官网介绍provide/inject 下面我们可以写个简单的例子来演示一下 父组件parent,我们在里面引入了一个子组件provideChild <templat

01.Vue初步学习

1.什么是Vue? Vue:一个可以帮助你实现前端MVVM的简单框架,易于上手. 2.入门使用 声明式渲染方式,使用{{}}标记占位符 <div id="app"> <p> <span>{{message}}</span> </p> </div> <script> var app = new Vue({ el:"#app", data:function(){ return {mess

Vue初步认识

什么是Vue Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架(根据需求使用特定的功 能).与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动. 关于学习Vue的前置工作/技术储备 1.GitBatch GitBatch是一个可以编写shell脚本的工具,今天我们学习的内容在c

VUE 初步学习

Vue 简单的总结一 Vue 简单的总结二 Vue 简单的总结三 Vue 简单的总结四(项目流程) Vue 简单的总结五 原文地址:https://www.cnblogs.com/heshun/p/10090572.html

vue初步使用

vue是构建前端视图的框架 引入vue.js文件 下文代码输出到页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue</title> <!-- 引入vue --> <script src="vue.js"></script> </head> <body> &

Vue初步了解组件——父子组件

组件 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有些情况下,组件也可以表现为用 is 特性进行了扩展的原生 HTML 元素.也可分为: 有结构HTML 有样式CSS 有交互(效果) 行为 信号量存数据 系统组件 <input type="number" style="outline: 10px solid red

vue 工作学习总结

配置ESlint yarn 初始化 yarn init yes 添加依赖 yarn add [package] 升级依赖 yarn upgrade [package] 移出依赖 yarn remove [package] npm npm i npm init --yes npm i gulp-pug gulp-debug gulp-sass //生产依赖 npm i gulp -P //开发依赖 npm i gulp -D //不添加到package.json npm i gulp --no-s