@Serega_SRG

Насколько правильно так перезаписывать свойство?

Имеется компонент, поведение которого (условный рендеринг) может определяться разными вещами.
У них есть свой приоритет. Props пути, Props от родителя, состояние какого-то геттера в state.
Насколько корректно делать так:

mounted () {
  if (prop) {
    this.x = 'a'
  }
  if (route) {
    this.x = 'b'
  }
  if (state) {
    this.x = 'c'
  }
}

То есть, перезаписывать свойство, если имеется более приоритетный источник данных?
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 3
0xD34F
@0xD34F Куратор тега JavaScript
Во-первых - что, если подходят несколько значений? Тогда будут выполнены лишние проверки и присваивания. Можно изменить порядок проверок на обратный, и вместо просто if использовать if-else. Или (что-то многовато if'ов и присваиваний) даже сложить данные в массив и искать в нём первое подходящее значение:

const data = [
  [ state, 'c' ],
  [ route, 'b' ],
  [  prop, 'a' ],
].find(n => n[0]);

if (data) {
  this.x = data[1];
}

Во-вторых - что, если какое-то из проверяемых значений изменится уже после монтирования компонента? Наверное, следует сделать ваш x вычисляемым свойством.
Ответ написан
@McBernar
Let this.x?
Ответ написан
Aetae
@Aetae
Тлен
Перезаписывать не надо. Проверили все условия и присвоили разок.
Если надо присваивать много - Object.assign вам в помощь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы