【发布时间】:2020-12-29 20:26:30
【问题描述】:
如果nearExpiry 属性在 30 天范围内,我尝试将其设为 TRUE。但是我遇到了一个错误Unexpected side effect in "isExpiryComing" computed property,有什么办法可以克服这个问题吗?
我不确定如何在 isExpiryComing 计算属性中使用 slice。这个错误有什么解决方法吗?
<template>
<div class="container wrapper d-flex flex-column justify-content-center align-items-center">
<h1 class="text-info">Ingredients List</h1>
<ingredients-list class="justify-content-center"
v-for="(ingredient,index) in sortedItems"
:key="index"
:index='index'
:food-name="ingredient.food"
:food-expiry="ingredient.expiryDate"
:is-expiry="isExpiryComing.nearExpiry"></ingredients-list>
</div>
</template>
<script>
export default {
data() {
return {
ingredients: [
{
food: 'CARROT',
expiryDate: '2020-12-12',
nearExpiry: false
},
{
food: 'PAPAYA',
expiryDate: '2018-1-15',
nearExpiry: false
},
{
food: 'ORANGE',
expiryDate: '2021-10-13',
nearExpiry: false
},
{
food: 'CHICKEN',
expiryDate: '2019-4-23',
nearExpiry: false
},
{
food: 'MEAT',
expiryDate: '2021-5-23',
nearExpiry: false
},
],
}
},
computed: {
sortedItems() {
return this.ingredients.slice().sort((a, b) => {
return new Date(a.expiryDate) - new Date(b.expiryDate);
});
},
isExpiryComing() {
const now = new Date().getTime()
const expiryDate = new Date(this.expiryDate).getTime()
if (now - expiryDate > (30 * 24 * 60 * 60 * 1000)) {
this.nearExpiry = false
} else {
this.nearExpiry = true
}
return this.nearExpiry
}
},
}
</script>
【问题讨论】:
-
能否请您发布错误消息?
-
“isExpiryComing”计算属性 vue/no-side-effects-in-computed-properties 中的意外副作用
-
你在哪里定义
nearExpiry? -
这是因为您正在设置
this.nearExpiry,这不是计算的用途(设置侧属性)。你会为此使用一种方法。为nearExpiry使用局部变量,而不是this.nearExpiry。 -
我想设置一个条件,如果日期超过 30 天,
nearExpiry将变为 true,我该如何实现?
标签: vue.js