解决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使用vant中的checkbox实现全选功能
Nov 17 Vue.js
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
vue $router和$route的区别详解
Dec 02 Vue.js
vue使用require.context实现动态注册路由
Dec 25 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
Vue仿Bibibili首页的问题
Jan 21 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
vue-cli4.5.x快速搭建项目
May 30 Vue.js
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
vue3使用vuedraggable实现拖拽功能
Apr 06 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 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连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
JavaScript 动态创建VML的方法
2009/10/14 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
python常用数据重复项处理方法
2019/11/22 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
Born鞋子官网:Born Shoes
2017/04/06 全球购物
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
医院总经理职责
2013/12/26 职场文书
商务日语专业自荐信
2014/04/17 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
清洁工个人总结
2015/03/04 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang