В VueJS у меня есть средство получения хранилища vuex, которое может выдать ошибку типа ErrorOne
или ErrorTwo
.
// myGetter.js
export class ErrorOne extends Error {}
export class ErrorTwo extends Error {}
export default () => {
if (...) {
throw new ErrorOne()
}
if (...) {
throw new ErrorTwo()
}
return ...
}
И в вычисляемом свойстве в моем компоненте Vue я использую этот метод получения, но я хочу обработать эти ошибки в блоке try catch.
// MyComponent.vue
import { ErrorOne, ErrorTwo } from '.../myGetter'
export default {
...,
data() {
return {
errorOne: false,
errorTwo: false
}
},
computed: {
myGetterComputed() {
try {
const value = this.$store.getters['.../myGetter']
this.errorOne = false // Unexpected side effect
this.errorTwo = false // Unexpected side effect
return value
} catch (err) {
switch (err.constructor) {
case ErrorOne:
this.errorOne = true // Unexpected side effect
break
case ErrorTwo:
this.errorTwo = true // Unexpected side effect
break
}
}
}
}
}
Но эслинт говорит мне [eslint] Unexpected side effect in "myComputedGetter" computed property. [vue/no-side-effects-in-computed-properties]
.
Как правильно обрабатывать ошибки в вычисляемых свойствах Vue в моем случае использования?
Должен ли я переместить myGetterComputed
к данным и использовать метод наблюдения для обработки обновлений?