Vue。如何在循环 v-for 中获取 prev 和 current 值以进行比较?

Posted

技术标签:

【中文标题】Vue。如何在循环 v-for 中获取 prev 和 current 值以进行比较?【英文标题】:Vue. How can I get prev and current value in loop v-for for comparing it? 【发布时间】:2021-09-19 22:03:58 【问题描述】:

我有一部分结构:

....
<template v-for="(item, INDEX) in someList">
    <template v-if="thisIsArrayList(item)">
        <template v-for="(_item) in item">
            <Component
                :item="_item"
                :key="_item.id"
                :myprop="checkIndex(INDEX)" - makes here some manipulation with prev and current INDEX and return iterration++ 0, 1
            ></Component>
        </template>
    </template>
    <template v-else>
        ....
    </template>
</template>
....

INDEX 可以多次使用相同的值,例如 (22, 22, 22) 下一步,例如 (25, 25) 等等.. 所以我尝试在 props:arrayId 中将 prevINDEXcurrentIndex 进行比较,以便通过迭代++ 将其传递给子项,就像新值一样

例如:

INDEX 几次等于 22 --> 将其更改为 0 并返回此值 --> 下一个 INDEX 夫妇时间等于 55 --> 将其更改为 1 并返回此值 --> 依此类推...

如何在 Vue 中做到这一点? 或者也许这个逻辑有另一种解决方案?

谢谢。

【问题讨论】:

你的问题有点不清楚; the index v-for parameter 有帮助吗?例如。 v-for="(item, index) in items" 将使循环中的模板访问索引值,您可以使用它来访问 items 中的上一个和/或下一个值。 我编辑了这个例子..所以你可以看到我的意思是什么 INDEX 【参考方案1】:

您不需要使用显式变量事实上 v-for 本身为您提供了在迭代期间提取索引的能力

<template v-for="(item, index) in items">
    <Component
        :item="item"
        :key="item.id"
    ></Component>
</template>

根据上面的代码,arrayId 属性不是必需的,因为您不再要比较索引 [因为您不会有冗余值]

【讨论】:

我编辑了这个例子..所以你可以看到我的意思是什么 INDEX 如果 someList 是一个数组,它们在 INDEX 中不会有冗余值 这取决于数组中有多少元素。如果 array.length == 2,子组件使用相同的 INDEX 获取 props:INDEX 3 次 你不明白 如果这是一个数组,那么索引就不会是多余的,也许每个对象内部的 id attr 可能是多余的

以上是关于Vue。如何在循环 v-for 中获取 prev 和 current 值以进行比较?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vue.js 中获取 v-for 索引?

vue里面如何让v-for循环出来的列表里面的列表跳转到不同的页面?

如何在 Vue js 的 v-for 循环中使用 v-model

Vue 从 v-for 循环输入文本中获取唯一值

Vue 3 & Composition API:v-for 循环中的模板引用错误:仅获取代理

vue3 if 条件与 v-for 循环