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中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
vue el-upload上传文件的示例代码
Dec 21 Vue.js
vue使用require.context实现动态注册路由
Dec 25 Vue.js
Vue仿百度搜索功能
Dec 28 Vue.js
vue+element UI实现树形表格
Dec 29 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
Vue Element UI自定义描述列表组件
May 18 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 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
php 全局变量范围分析
2009/08/07 PHP
php 操作符与控制结构
2012/03/07 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
PHP可变函数的使用详解
2013/06/14 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
学习和使用python的13个理由
2019/07/30 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Python字符串三种格式化输出
2020/09/17 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
学前教育教师求职自荐信
2013/09/22 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
高中自我评价范文
2014/01/27 职场文书
双创工作实施方案
2014/03/26 职场文书
小学生优秀评语大全
2014/04/22 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
委托证明范本
2014/11/25 职场文书
教师工作表现评语
2014/12/31 职场文书
公务员年度考核评语
2014/12/31 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js