vue reject provide可以传异步数据吗?
vue reject provide异步数据怎么传递
// 父组件export default {
data(){
return{
res:{}
}
},
provide() {
return {
formItem: this.res
};
},
methods:{
get().then((res)=>{
this.res = res
})
}
}
// 子组件
export default {
inject: ["formItem"],
mounted(){
console.log(this.formItem) // 这里接不到,请问可以解决吗
}
}
回答:
provide-inject
如果传递的是非引用类型的值,是不会响应式变化的,但是如果传递的是个引用类型的值,是会响应式变化的。
你接收不到的原因是,在子组件的mounted
执行的时候,父组件中res
还未得到值。
回答:
其实这个可以用异步 action
的思路去解决:
// 父组件export default {
data() {
return {
res: null
}
},
provide() {
return {
getRes: this.getRes
};
},
methods:{
async getRes() {
if (!this.res) this.res = await get()
return this.res
}
}
}
// 子组件
export default {
inject: ["getRes"],
async mounted() {
console.log(await this.getRes())
}
}
回答:
Vue2里用provide 去传递一个响应式的对象
父元素
{
provide () {
return {
test: this.objData
};
},
data () {
objData: {
message: 'hello'
}
},
mounted() {
// 随机变换值
setInterval(() => { this.$set(this.objData.message = Math.random())} , 3000) }
}
子元素
inject: ['test']
以上是 vue reject provide可以传异步数据吗? 的全部内容, 来源链接: utcz.com/p/936645.html