vue2实现provide inject传递响应式


Posted in Vue.js onMay 21, 2021

1. vue2 中的常规写法

// 父级组件提供 'foo'
var Provider = {
data(){
    return {
        foo: 'bar'
    }
}
  provide: {
    fooProvide: this.fooFn // 传递一个引用类型函数过去
  },
 methods:{
     fooFn() {
        return this.foo
      }
 }
}

var Child = {
  inject: ['fooProvide'],
  computed:{
      fooComputed(){
          return this.fooProvide()  // 因为传递过来是个引用类型的函数
      }
  }
  created () {
    console.log(this.fooComputed) 
  }
  // ...
}

2. vue2 中的不太常规写法,但用得舒服.(大概用法还是一样,只是传递的值变成 this--> 整个实例)

// 父级组件提供 'foo'
var Provider = {
data(){
    return {
        foo: 'bar',
        other:'...'
    }
}
  provide: {
    app: this// 传递整个this过去
  },
  mounted(){
      const that = this
      setTimeout(()=>{
          that.foo = '改变值'
      },4000)
  }
}

var Child = {
  inject: ['app'],
  created () {
    console.log(this.app.foo)  // this.app 下面都是响应式的,因为都是同一实例下的引用
  }
  // ...
}

3. vue2 + ts (因为ts之前没用过的话确实不知道怎么用,所以示例一下)

Provide 方式:
 1. @Provide() foo = 'foo'
 2. @Provide('bar') baz = 'bar'

Inject 方式:
 1. @Inject() foo: string
 2. @Inject('bar') bar: string
 3. @Inject(s) baz: string

示例:

// 父级组件提供 'fooProvide'
@Provide('fooProvide') // 随意起名,传递跟接收一样就行.但一般保持跟下面变量一样
fooProvide = this.refreshNumFn // 变量接收一下要传递的值
refreshNumFn() {
  return this.refreshNum
}

// 子组件接收
@Inject('fooProvide') fooProvide: any
get valueA(): any {
    return this.fooProvide()
  }
mounted(){
    console.log(this.valueA) // ...
}

到此这篇关于vue2实现provide inject传递响应式 的文章就介绍到这了,更多相关vue2 provide inject 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue使用vant中的checkbox实现全选功能
Nov 17 Vue.js
Vue router传递参数并解决刷新页面参数丢失问题
Dec 02 Vue.js
vue使用element-ui实现表单验证
Dec 13 Vue.js
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
vue实现Toast组件轻提示
Apr 10 Vue.js
vue使用localStorage持久性存储实现评论列表
Apr 14 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 Vue.js
vue css 相对路径导入问题级踩坑记录
Jun 05 Vue.js
vue @ ~ 相对路径 路径别名设置方式
Jun 05 Vue.js
vue使用节流函数的踩坑实例指南
vue实现同时设置多个倒计时
May 20 #Vue.js
Vue和Flask通信的实现
Vue Element UI自定义描述列表组件
使用这 6个Vue加载动画库来减少我们网站的跳出率
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
详解vue中v-for的key唯一性
You might like
windows7下php开发环境搭建图文教程
2015/01/06 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
php中的异常和错误浅析
2017/05/03 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
js微信支付实现代码
2016/12/22 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
带你了解python装饰器
2017/06/15 Python
python3调用R的示例代码
2018/02/23 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
python使用建议与技巧分享(二)
2020/08/17 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
数学与统计学院学生个人职业生涯规划书
2014/02/10 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang
Selenium浏览器自动化如何上传文件
2022/04/06 Python