Ловля ошибок в вычисляемых свойствах в Vue - PullRequest
0 голосов
/ 17 января 2019

В 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 к данным и использовать метод наблюдения для обработки обновлений?

1 Ответ

0 голосов
/ 17 января 2019

Если я собираюсь прямо ответить на ваш вопрос, я могу вам сказать, что eslint использует это правило , чтобы предупредить вас о непреднамеренном побочном эффекте. Согласно документации eslint-plugin-vue

Вводить побочные эффекты в вычисляемые свойства считается очень плохой практикой. Это делает код не предсказуемым и трудным для понимания.

По сути, нам нужно помнить, что вычисляемые свойства предназначены для использования, когда существует жесткая логика, связанная с обработкой данных внутри шаблонов. Поэтому вам не следует обновлять какие-либо свойства / данные внутри логики вычисляемых свойств.

Я бы хотел помочь вам, если вы предоставите более подробный пример того, что вы пытаетесь достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...