解决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 21 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 Vue.js
Vue+Flask实现图片传输功能
Apr 01 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 Vue.js
解决vue-router的beforeRouteUpdate不能触发
Apr 14 Vue.js
vue使用watch监听属性变化
Apr 30 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
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
python检测某个变量是否有定义的方法
2015/05/20 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
用Python逐行分析文件方法
2019/01/28 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
人力资源专员岗位职责
2014/01/30 职场文书
中文师范生自荐信
2014/01/30 职场文书
大学军训感言800字
2014/02/27 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
上甘岭观后感
2015/06/10 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
JS 基本概念详细介绍
2021/10/16 Javascript
JavaScript组合继承详解
2021/11/07 Javascript
java实现web实时消息推送的七种方案
2022/07/23 Java/Android