gpt4 book ai didi

javascript - Vue JS V-用于组件 react 性

转载 作者:行者123 更新时间:2023-11-28 03:20:45 28 4
gpt4 key购买 nike

我遇到一个问题,当新数据传递给子组件时,我无法更新子组件。数据传递正常,但组件未更新。

如果我将 :key 更改为对象而不是唯一 ID,它就可以工作!但我收到一条警告错误,提示不要使用该对象作为键,所以显然这不是正确的方法?!

 <swiper ref="timelineCarousel" :options="swiperOption">
<div slot="pagination" class="swiper-pagination kt-margin-b-10"></div>

<!-- creates swiper slides for each timeline -->
<swiper-slide
v-for="timeline in timelines"
:key="timeline.id + timeline.time"
class="col-md-3 noSwipe"
>
<!-- creates the timeline draggable elements -->
<timeline
:id="timeline.id"
:key="timeline.id + timeline.current_vehicle_reg"
:hour-to-scroll-to="scrollHour"
:day-to-scroll-to="scrollDay"
:month-to-scroll-to="scrollMonth"
:year-to-scroll-to="scrollYear"
></timeline>
</swiper-slide>
</swiper>

因此,当我更新 this.timeline 时,我可以看到 vue 工具中的数据发生变化,但组件不会更新 - 除非我使用时间轴对象作为键!!

我应该补充一点,我在时间线对象上添加了一个观察程序,当我使用以下方法更新数据时会触发该观察程序:

Vue.set(this.timelines, 0, 事件);

我不知道我做错了什么。

最佳答案

键只是为元素列表提供唯一标识符的一种方法。如果您想确保修改时间线列表得到您期望的结果,它必须有一个唯一键,并且不是数组的索引。

// bad
<swiper-slide
v-for="(timeline, index) in timelines"
:key="index"
class="col-md-3 noSwipe"
>

大多数情况下,对象的 ID 可用作键。您不想使用复杂的数据结构(例如 ID 对象)。

// good
<swiper-slide
v-for="timeline in timelines"
:key="timeline.id"
class="col-md-3 noSwipe"
>

Vue.js 文档非常好,我建议您自己阅读。 Here is a link将键与 v-for 指令一起使用。

您不需要嵌套在子元素上的 :key 属性来解决此问题,只需在带有 v-for 的元素上即可。

关于javascript - Vue JS V-用于组件 react 性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180284/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com