vue.js:颠倒v-for循环的顺序

krz*_*z79 2 reverse vue.js v-for

我正在寻找类似于下面的代码的内容,以在用户添加它们的框下方显示数组中的主题列表。(最新的顶部)我知道我可以取消移动而不是推动更改主题存储在数组中的顺序,但是有没有办法保持原始数组顺序并反转显示的主题而不触发“[Vue警告]:你在组件渲染函数中可能有一个无限更新循环。”?

<div class="field add-topic">
    <label for="add-topic">Add a Topic (press Tab):</label>
    <input type="text" name="add-topic" @keydown.tab.prevent="addTopic" v-model="newTopic">
</div>
<div v-for="(tpc, index) in topics.reverse()" :key="index">
    <label for="topic">Topics:</label>
    <input type="text" name="topic" v-model="topics[index]">
</div>
Run Code Online (Sandbox Code Playgroud)

Pie*_*aid 6

slice方法将创建数组的副本。之前使用它reverse只能反转副本。

topics.slice().reverse();
Run Code Online (Sandbox Code Playgroud)
  <div class="field add-topic">
    <label for="add-topic">Add a Topic (press Tab):</label>
    <input type="text" name="add-topic" @keydown.tab.prevent="addTopic" v-model="newTopic">
  </div>
  <div v-for="(tpc, index) in topics.slice().reverse()" :key="index">
    <label for="topic">Topics:</label>
    <input type="text" name="topic" v-model="topics[index]">
  </div>
Run Code Online (Sandbox Code Playgroud)

更多信息:https : //stackoverflow.com/a/30610528/5671919

  • 在这种情况下,我更喜欢使用计算属性来执行反转和复制逻辑,然后您可以在计算属性名称上使用“v-for”。您还可以使用扩展运算符创建副本:“[...topics].reverse()”。 (4认同)