例如有一个 List
组件,这个组件可以根据我数据条数来生成对应的 ListItem
。Item的样式不是固定死的,是通过插槽传入。
List 组件代码(插槽部分)
<view class="card-list-item" :key="index" v-for="item, index in props.list ?? []">
<slot name="item" :item="item" :index="index"/>
<nut-divider v-if="index !== (props.list ?? []).length - 1" />
</view>
使用 List (插槽部分)
<template #item="data">
<view class="piece-content">{{data.index}}</view>
</template>
问题:
- 通过插槽渲染的内容,外面包裹了一个view标签,导致样式有问题
- 在多次尝试后又发现一个问题,当我插槽存在props的时候,例如:
<slot :item="item" / >
,正常渲染,但出现问题1。没有props的时候问题1解决,但我 List 组件插槽渲染就出现问题了,例如我数据有3条,本应该渲染3次插槽内容,但只渲染了1次。如下图,第一个ss字符应该在每一行都出现,但只在第1行渲染了,0-3是List遍历的时候输出的index。
附件中test.zip是简单复现,直接运行看起来可能没问题,我在代码里写了有问题的几种情况与注释
1***@qq.com
有效
2024-08-05 14:41