组件切换骚操作你晓得嘛

本文标识 : V00012

本文编辑 : Jack 风 编程工具 : Vscode 阅读时长 : 3分钟

使用flag标识符结合v-if和v-else切换组件

页面结构:

 <div id="app">      <input type="button" value="toggle" @click="flag=!flag">      <my-com1 v-if="flag"></my-com1>      <my-com2 v-else="flag"></my-com2>    </div>

Vue实例定义:

 <script>      Vue.component('myCom1', {        template: '<h3>欢迎</h3>'      })        Vue.component('myCom2', {        template: '<h3>关注A2Data</h3>'      })        // 创建 Vue 实例,得到 ViewModel      var vm = new Vue({        el: '#app',        data: {          flag: true        },        methods: {}      });    </script>

使用:is属性来切换不同的子组件,并添加切换动画

组件实例定义方式:

 // 登录组件      const login = Vue.extend({        template: `<div>          <h3>登录组件</h3>        </div>`      });      Vue.component('login', login);        // 注册组件      const register = Vue.extend({        template: `<div>          <h3>注册组件</h3>        </div>`      });      Vue.component('register', register);        // 创建 Vue 实例,得到 ViewModel      var vm = new Vue({        el: '#app',        data: { comName: 'login' },        methods: {}      });

使用component标签,来引用组件,并通过:is属性来指定要加载的组件:

  <div id="app">      <a href="#" @click.prevent="comName='login'">登录</a>      <a href="#" @click.prevent="comName='register'">注册</a>      <hr>      <transition mode="out-in">        <component :is="comName"></component>      </transition>    </div>  添加切换样式:      <style>      .v-enter,      .v-leave-to {        opacity: 0;        transform: translateX(30px);      }        .v-enter-active,      .v-leave-active {        position: absolute;        transition: all 0.3s ease;      }        h3{        margin: 0;      }    </style>

效果如下