解决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-sdk时config和agentConfig配置方式详解
Dec 15 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
vue 使用rules对表单字段进行校验的步骤
Dec 25 Vue.js
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
解决vue中provide inject的响应式监听
Apr 19 Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 20 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 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
cmd下运行php脚本
2008/11/25 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
php目录拷贝实现方法
2015/07/10 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
php和nginx交互实例讲解
2019/09/24 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
python通过yield实现数组全排列的方法
2015/03/18 Python
Python中的默认参数实例分析
2018/01/29 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python获取服务器响应cookie的实例
2018/12/28 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
Python的两道面试题
2013/06/29 面试题
应届生简历中的自我评价
2014/01/13 职场文书
银行办公室岗位职责
2014/03/10 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android