A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【重点】为什么组件中的data属性必须定义为一个方法并返回一个对象
  • 通过计数器案例演示

使用components属性定义局部子组件
  • 组件实例定义方式:
  • [AppleScript] 纯文本查看 复制代码
    <script>
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {},
          methods: {},
          components: { // 定义子组件
            account: { // account 组件
              template: '<div><h1>这是Account组件{{name}}</h1><login></login></div>', // 在这里使用定义的子组件
              components: { // 定义子组件的子组件
                login: { // login 组件
                  template: "<h3>这是登录组件</h3>"
                }
              }
            }
          }
        });
      </script>
  • 引用组件:
  • [AppleScript] 纯文本查看 复制代码
    <div id="app">
        <account></account>
      </div>
  • 使用flag标识符结合v-if和v-else切换组件
  • 页面结构:
  • [AppleScript] 纯文本查看 复制代码
    <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实例定义:
  • [AppleScript] 纯文本查看 复制代码
    <script>
        Vue.component('myCom1', {
          template: '<h3>奔波霸</h3>'
        })
    
        Vue.component('myCom2', {
          template: '<h3>霸波奔</h3>'
        })
    
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {
            flag: true
          },
          methods: {}
        });
      </script>

  • 使用:is属性来切换不同的子组件,并添加切换动画
    • 组件实例定义方式:
    • [AppleScript] 纯文本查看 复制代码
      // 登录组件
          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属性来指定要加载的组件:
    • [AppleScript] 纯文本查看 复制代码
      <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>
    • 添加切换样式:
    • [AppleScript] 纯文本查看 复制代码
       <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>




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马