Как передать вычисленный с параметром реквизит дочернего компонента? - PullRequest
0 голосов
/ 24 февраля 2019

Я новичок в Вуэйсе.Я пытаюсь передать вычисленный с параметром в подпорки дочернего компонента, но это ошибка.Это мой код:

<FloatingInput
    :type="'text'"
    :name="'username'"
    :error="fieldError('username')"
>
<FloatingInput
    :type="'password'"
    :name="'password'"
    :error="fieldError('password')"
>

А в скрипте:

computed: {
    fieldError: {
        get: function () {
            return this.error[field]; // will return false or message error
        },
        set: function (field) {
            this.error[field];
        }
    },          
}

1 Ответ

0 голосов
/ 24 февраля 2019

Вычисленные свойства должны быть чистыми.Это означает, что вычисляемые свойства зависят исключительно от состояния компонента и не должны иметь побочных эффектов.Это позволяет Vue только пересчитывать вычисленные свойства всякий раз, когда изменяются данные, на которые они полагаются.По этой причине вы не можете вызвать вычисляемое свойство.Вы должны использовать метод.

К счастью для вас, то, что вы хотите сделать, это просто поиск ключа в объекте, так что вы можете просто использовать атрибут данных и искать поле.

<FloatingInput
  type="text"
  name="username"
  :error="fieldErrors['username']"
>
data () {
  fieldErrors: {}
},

methods: {
  setFieldError(field, error) {
    this.$set(this.fieldErrors, field, error);
  }
}
...