解决vue中provide inject的响应式监听

provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。

Posted in Vue.js onApril 19, 2022

provide inject的响应式监听解决

提示:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。

所以传值传对象即可

provide(){
    return {
      provObj: {
        uuidList:{}
      }
    }
  },
  • this._provided.provObj.uuidList = res(异步得到的数据)
  • inject那边正常获取

vue监听赋值及provide与inject

vue 当父组件 改变 子组件的props 却不变

  watch: {
    'oState': function (val,oldval) {
      this.getOrderList({orderStatus: this.getOrderState(this.oState), pageSize: 1})
    },
  // 深度 watcher
      c: {
        handler: function (val, oldVal) { /* ... */ },
        deep: true
      },
  },
  • $refs
  <ul class="comment-list" v-if="list" ref="commentList"></ul>
  scrollToTop () {
    this.$refs.commentList.scrollTop = 0
  }
  • $el
  this.$refs.studentListDialog.$el.querySelector('.el-dialog')
  vm.$once( event, callback )

参数:

{string} event

{Function} callback

用法:

监听一个自定义事件,但是只触发一次,在第一次触发之后移除监听器。

vm.$off( [event, callback] )

参数:

  • {string | Array<string>} event (只在 2.2.2+ 支持数组)
  • {Function} [callback]

用法:

  • 移除自定义事件监听器。
  • 如果没有提供参数,则移除所有的事件监听器;
  • 如果只提供了事件,则移除该事件所有的监听器;
  • 如果同时提供了事件与回调,则只移除这个回调的监听器。
vm.$destroy()

用法:

完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。

触发 beforeDestroy 和 destroyed 的钩子。

当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去

  obj:{
      arr:[]
  }

双向绑定后无法直接改变obj.arr

需要新增一个arr赋值或者

  this.$set(this.ruleForm, 'date', time)
  vue.set(target,key,value)

参数:

{object | Array} target

{string | number} key

{any} value

this.$set()和Vue.set()本质方法一样,前者可以用在methods中使用。

set方法调用时,可以触发页面全部重新渲染。

provide:Object | () => Objectinject:Array<string> | { [key: string]: string | Symbol | Object }

这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。如果你熟悉 React,这与 React 的上下文特性很相似。

provide 选项应该是一个对象或返回一个对象的函数。该对象包含可注入其子孙的属性。在该对象中你可以使用 ES2015 Symbols 作为 key,但是只在原生支持 Symbol 和 Reflect.ownKeys 的环境下可工作。

inject 选项应该是:

一个字符串数组,或一个对象,对象的 key 是本地的绑定名,value 是:

在可用的注入内容中搜索用的 key (字符串或 Symbol),或一个对象,该对象的:

  • from 属性是在可用的注入内容中搜索用的 key (字符串或 Symbol)
  • default 属性是降级情况下使用的 value

提示:provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的属性还是可响应的。

示例:

// 父级组件提供 ‘foo'
  var Provider = {
    provide: {
      foo: 'bar'
    },
    // ...
  }
// 子组件注入 'foo'
  var Child = {
    inject: ['foo'],
    created () {
      console.log(this.foo) // => "bar"
    }
    // ...
  }
Vue.js 相关文章推荐
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
对vue生命周期的深入理解
Dec 03 Vue.js
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
Vue使用鼠标在Canvas上绘制矩形
Dec 24 Vue.js
Vue项目中使用mock.js的完整步骤
Jan 12 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
Vue3 Composition API的使用简介
Mar 29 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 #Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 #Vue.js
解决vue-router的beforeRouteUpdate不能触发
Apr 14 #Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 #Vue.js
vue使用localStorage持久性存储实现评论列表
Apr 14 #Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 #Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 #Vue.js
You might like
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
js中less常用的方法小结
2017/08/09 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
盛大笔试题
2016/11/05 面试题
个人求职信范例
2014/01/29 职场文书
股份合作协议书
2014/09/10 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
四年级学生期末评语
2014/12/26 职场文书
先进工作者个人总结
2015/02/15 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
男人帮观后感
2015/06/18 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
分享一些Java的常用工具
2021/06/11 Java/Android
MySQL窗口函数的具体使用
2021/11/17 MySQL