Невозможно использовать вычисленное свойство в данных

В моих данных есть массив:

data () {
  return {
    steps: [
      {
        disabled: this.someCheck
      }
    ]
  }
}

И вычисляемое свойство:

computed: {
  ...mapGetters({
    getFinishedSteps: 'jobFound/getFinishedSteps'
  }),

  someCheck () {
    let x = true
    for (const val of this.getFinishedSteps) {
      if (val === ('address_information' || 'contact_information' || 'financiel_information' || 'identity_information')) {
        x = false
      }
    }
    return x
  }
}

И шаблон:

<ProgressContent
  v-for="(step, n) of steps"
  :key="n"
/>

И компонент ProgressContent:

props: {
  step: {
    type: Object,
    default: () => ({
      disabled: false
    })
  },
}

Я хочу передать возвращаемое значение вычисляемого свойства someCheck в значение disabled в данных, но в компоненте ProgressContent значение disabled отсутствует (оно пусто).


person Peter Boomsma    schedule 05.03.2021    source источник


Ответы (1)


Вы не можете назначить вычисленное свойству данных во время инициализации данных. Даже если бы вы могли, это не было бы реакцией, это произошло бы только один раз. Если вычисленное изменилось, свойство данных не изменилось бы.

Вы можете создать steps как вычисляемый:

computed: {
  ...mapGetters({
    getFinishedSteps: 'jobFound/getFinishedSteps'
  }),
  someCheck () {
    // ...
  },
  steps() {
    return [{  disabled: this.someCheck }]
  }
}

Или вы можете использовать часы:

data() {
  return {
    steps: [{ disabled: null }]
  }
},
computed: {
  ...mapGetters({
    getFinishedSteps: 'jobFound/getFinishedSteps'
  }),
  someCheck () {
    // ...
  }
},
watch: {
  someCheck: {
    handler(newValue) {
      this.steps[0].disabled = newValue;
    },
    immediate: true
  }
},
person Dan    schedule 05.03.2021