Nuxt实现无限加载时第二页数据已获取但不渲染问题求助
排查解决步骤
- 保证父组件数据的响应性
Vue2中如果未在data中提前声明productsAndSkus,后续赋值无法触发响应式更新,需要在父组件补充声明:
Vue3组合式API场景下,需要确保用data() { return { productsAndSkus: [] } }ref或reactive包裹响应式数据,更新时操作对应value属性。- 保证父组件数据的响应性
- 检查子组件props声明
确保my-products子组件已正确声明接收productsAndSkus属性:
props: { productsAndSkus: { type: Array, default: () => [] } }- 检查子组件props声明
- 补全子组件渲染逻辑
你当前提供的子组件模板中仅包含无限加载触发组件,没有遍历productsAndSkus渲染商品项的逻辑,需补充对应的v-for渲染代码:
<template> <!-- 补全v-if对应逻辑,避免v-else不生效 --> <div v-if="loading">加载中</div> <client-only v-else> <!-- 新增列表渲染逻辑 --> <div v-for="product in productsAndSkus" :key="product.id" class="product-card"> <!-- 你的商品展示内容 --> </div> <infinite-loading ref="infiniteLoader" :distance="800" force-use-infinite-wrapper @infinite="infiniteHandler" > <div slot="no-more" /> </infinite-loading> </client-only> </template>- 补全子组件渲染逻辑
- 排查子组件本地数据同步问题
如果子组件内将props的值赋值给了本地变量用于渲染,需要添加watch监听props变化同步更新本地数据:
// Vue2 示例 watch: { productsAndSkus: { handler(newVal) { this.localProductList = newVal }, deep: true } }- 排查子组件本地数据同步问题
内容的提问来源于stack exchange,提问作者francky
相关产品推荐
相关产品推荐

