解决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如何实现验证码输入交互
Dec 07 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
Vue项目中使用mock.js的完整步骤
Jan 12 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
vue整合百度地图显示指定地点信息
Apr 06 Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 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
本地计算机无法启动Apache故障处理
2014/08/08 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
JS的Document属性和方法小结
2013/09/17 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
详解React 16 中的异常处理
2017/07/28 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
2018/08/17 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
python获得一个月有多少天的方法
2015/06/04 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
反对邪教标语
2014/06/30 职场文书
大学同学会活动方案
2014/08/20 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
导师对论文的学术评语
2015/01/04 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
大学生社会服务心得体会
2016/01/22 职场文书