解决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 实现基础组件的自动化全局注册
Dec 25 Vue.js
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
vue实力踩坑之push当前页无效
Apr 10 Vue.js
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
vue 给数组添加新对象并赋值
Apr 20 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP mkdir()定义和用法
2009/01/14 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
js 解决“options为空或不是对象”
2008/12/22 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
详细解读Python中解析XML数据的方法
2015/10/15 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
Python远程方法调用实现过程解析
2020/07/28 Python
python 深度学习中的4种激活函数
2020/09/18 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
如何实现一个自定义类的序列化
2012/05/22 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
父亲节活动策划方案
2014/08/24 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis