最新下载
热门教程
- 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) // ...
}
相关文章
- 原神织月者的曙色武器介绍 10-29
- 寂静岭2重制版最善良的博伊成就攻略 10-29
- 寂静岭2重制版锡帽成就解锁攻略分享 10-29
- 寂静岭2重制版潜伏接近成就解锁攻略 10-29
- 寂静岭2重制版比雾更快成就解锁攻略 10-29
- 暗喻幻想:ReFantazio无敌面料理获取攻略 10-29