您的位置:首页 > 文旅 > 美景 > vue3使用provide和inject传递异步请求数据子组件接收不到

vue3使用provide和inject传递异步请求数据子组件接收不到

2024/12/23 9:21:45 来源:https://blog.csdn.net/qq_35641191/article/details/141712110  浏览:    关键词:vue3使用provide和inject传递异步请求数据子组件接收不到

前言

一般接口返回的格式是数组或对象,使用reactive定义共享变量

父组件传递

const data = reactive([])// 使用settimout模拟接口返回
setTimeout(() => {// 将接口返回的数据赋值给变量Object.assign(data, [{ id: 10000 }])
}, 3000);provide('shareData', data);// 这行代码也不用写在异步请求回调里,我一般放在js代码最底部

子组件接收

<template>{{ receiveData }}
</template><script lang="ts" setup>
import { inject } from 'vue';const receiveData = inject('shareData')
console.log(receiveData );// 这个位置打印时取不到最新的数据,直接在html代码里使用,会有数据// 如果想在js中处理后使用,加个watch监听,采用深度监听deep:true
watch(() => receiveData, (res) => {console.log(res);// TODO处理数据
}, { deep: true })</script>

可以看到子组件模板中先显示初始值,待接口返回后更新为最新值 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com