最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
vue2实现provide inject传递响应式代码示例
时间:2022-06-29 02:26:21 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下vue2实现provide inject传递响应式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
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) // ... }
相关文章
- 《原神》5.2卡池抽取建议 11-14
- 《原神》5.2版本新怪物介绍 11-14
- 《原神》希诺宁增伤触发方法 11-14
- 《原神》循音觅奇活动入口 11-14
- 《原神》循音觅奇兑换码获取方法 11-14
- 《原神》花羽会活动飞行技巧介绍 11-14