原代码
<div
class="holiday"
v-if="isHoliday(data.day)"
:holidayName="holidayName"
>
{{ holidayName }}
</div>
<script>
export default{
data() {
holidays,
holidayName: ''
},
methods: {
isHoliday(day) {
for (const item of holidays.days) {
if (item.date === day && item.isOffDay) {
this.holidayName = item.name
return true
}
}
return false
}
}
}
</script>
原因分析
查找相关资料发现是因为在v-for 循环中修改了data 中的holidayName属性,导致死循环
解决方案
直接把holidayName 作为返回值,不另外设置变量
修改后的代码
<div class="holiday" v-if="isHoliday(data.day)">
{{ isHoliday(data.day) }}
</div>
<script>
export default{
data() {
holidays,
},
methods: {
isHoliday(day) {
for (const item of holidays.days) {
if (item.date === day && item.isOffDay) {
return item.name
}
}
return false
}
}
}
</script>
|