【发布时间】:2021-06-06 05:39:23
【问题描述】:
任务
我正在开发一个产品市场。每个产品都有一个 ID 和一堆与每个产品相关的信息。
有一个产品包装的概念,它只是一个产品,它是其他产品的捆绑。
在 GET PACKAGES 响应中,有一组与此包中的产品相关的 ID。在页面的其他位置,我请求产品列表,所以我已经有了我需要的数据,我只需要连接两个数据集。
该任务涉及在 UI 中显示包,以及通过两个数据集之间的 ID 连接的每个产品的描述(在 GET PRODUCTS 的另一个响应中)。
设置说明
我有一个父组件,它调用 GET PRODUCTS 和 GET PACKAGES。
我将包传递给可重用的 Vue 组件,以在 UI 中显示该包的基本信息。除此之外,我还将所有产品传递给组件,以便我们可以在包 UI 的预览中显示正确的产品描述。
问题
当将产品列表传递给子组件时,我可以完美地在控制台记录整个产品数组,但是第二次我尝试循环遍历它们(通过 MAP 或 FOREACH)没有任何反应。循环内没有控制台日志;这就像循环甚至没有运行。
父组件代码
<package
v-for="package in packages"
:key="package.id"
:packages="package"
:products="products"
></package>
// I get both sets of data in beforeOnMount and push it to the below variables
const packages = reactive<Array<Package>>([]);
const products = reactive<Array<Product>>([]);
子组件代码
props: {
packages: Object as () => Package,
products: Object as () => Array<Product>
}
setup(props) {
const uiPackages= reactive<Array<IPackageDetails>>([]);
const productData = props.products;
// This console log's a Proxy, with the handler containing an array of objects perfectly fine.
console.log(productData);
if (productData) {
// This console log's undefined
console.log(productData[0]);
productData.forEach((product) => {
// This does NOTHING in console!
console.log(product)
}
}
}
子组件中productData的控制台日志
【问题讨论】:
-
clinAppData是在哪里定义的?控制台有错误吗? -
我已经更新了这些名称,因为它们是错误的,谢谢
标签: vue.js vue-component vuejs3 vue-composition-api vue-reactivity