JSFiddle - React, Tailwind, and code Playground

by Lee Sun-Hyoup

HTML

<div id="app">
  <transition name="fade" mode="out-in">
    <keep-alive>
      <component :is="currentView" keep-alive></component>
    </keep-alive>
  </transition>
  <button @click="currentView = 'component-one'">component one</button>
  <button @click="currentView = 'component-two'">component two</button>
</div>

CSS

.fade-enter-active, .fade-leave-active {
  transition: opacity .5s
}
.fade-enter, .fade-leave-to {
  opacity: 0
}

JavaScript

Vue.component('component-one', {
  template: '<div><input></div>'
})

Vue.component('component-two', {
  template: '<div>two</div>'
})

new Vue({
  el: '#app',
  data: {
    currentView: 'component-one'
  }
})