Эта публикация является любительским переводом статьи «The correct way to force Vue to re-render a component» от Майкла Тиссена.
Иногда бывает так, что реактивности Vue не хватает, и вам нужно перерендерить компонент. Или вам нужно сбросить DOM и начать сначала.
Так как же правильным образом заставить Vue перерендерить компонент?
Ответ прост. Правильный путь — использовать :key
в компоненте. Когда вам нужно перерендерить компонент, вы просто меняете значение ключа и Vue обновит компонент.
Довольно просто, не так ли? Есть также и другие способы:
- Худший вариант: обновить всю страницу,
- Плохой вариант: использовать
v-if
хак, - Чуть лучше: использовать встроенный в Vue метод
forceUpdate
, - Лучший вариант: использовать изменение ключа.
Обратите внимание! Если вы столкнулись с ситуацией, в которой вам нужно перерендерить компонент, вероятно, есть более правильный способ решить задачу. Скорее всего, вы не до конца разобрались с чем-то из этого: 1. Реактивность Vue, 2. Computed-свойства, 3. Watch-свойства, 4. Не используете :key
атрибут для v-for
.