Динамический компонент и условный рендеринг в Vue 2

#vue.js #vuejs2

#vue.js #vuejs2

Вопрос:

Недавно я играл с динамическими компонентами в Vue 2.

Допустим, у нас есть два компонента SignIn и SignOut, которые должны быть отображены условно.

 import SignIn from '~/components/SignIn.vue
import SignUp from '~/components/SignUp.vue

export default {
components: {
  SignOut,
  SignIn
}
data() {
  return { 
    condition: true
  }
}
 

Обычно я использую шаблон условного рендеринга Vue следующим образом:

 <template>
  <SignIn v-if="condition" />
  <SignUp v-else />
</template>
  
 

Но я могу достичь того же результата с помощью шаблона динамических компонентов.

 <script>
data() {
  return {
    condition: true,
    component: this.condition ? 'SignIn' : 'SignUp'
  }
}
</script>

<template>
  <component :is="component" />
</template>
 

Что вы об этом думаете?

Комментарии:

1. При переключении между несколькими компонентами динамический код меньше шаблонного. Но для двоих v-if легче понять цель с первого взгляда.