【发布时间】:2020-09-15 21:12:14
【问题描述】:
我有一个组件,其中模板仅在我更改唯一值时才会更新:
setup(prop) {
const uniqueValue = ref(1);
const fullStar = ref(['fillerValue', false, false, false, false, false]);
const displayRating = (rating: number) => {
uniqueValue.value += 1;
for (let index = 1; index <= rating; index++) {
fullStar.value[index] = true;
}
};
return {
uniqueValue,
fullStar,
}
<template>
<div class='ratingContainer'
v-on:mouseleave='displayRating(storedRating)'>
<div v-for='n in 5' :key='n'>
<StarIcon v-if='fullStar[n]' />
<div style="display: none">{{ uniqueValue }}</div>
</div>
</div>
</template>
我有一个名为fullStar 的数组,我想根据传递给displayRating 函数的评分在模板中显示一些星星。
但只有当我在模板中使用uniqueValue 值时,模板才会重新呈现,即使fullStar 数组值也发生了变化。
【问题讨论】:
-
我是否理解正确,您有一个使用多个值的模板,但只想在
uniqueValue更改时重新渲染? -
不,恰恰相反 :)。我已经更新了这个问题。所以想法是,当我将
ratingContainer元素留在组件中时,我调用displayRating函数并传递storedRating值。该值在组件中可用,只是省略它以免使问题混乱。问题是模板仅在我使用{{ uniqueValue }}时重新呈现 -
不就是
displayRating函数的问题吗?当前逻辑完全忽略输入参数并始终将所有数组项设置为false....因此看起来组件实际上不会重新渲染,只是始终具有相同的数组内容... -
从头输入代码时出错。这个想法是,当调用该函数时,它将循环 x 数量(其中 x 是评级)并将数组中的 1 个布尔值设置为 true,这在本地工作正常(当我记录它时它确实显示了预期的输出)但是模板不会重新渲染。但似乎在组合 api 中存在一些关于反应性和数组的问题。 github.com/vuejs/composition-api/issues?q=array
-
你知道你可以在没有任何数组的情况下做到这一点,对吧?或者这只是为了专门试验阵列反应性?
标签: vuejs2 vue-composition-api