封装Vue组件的步骤

2020-03-02  本文已影响0人  布卡卡的晴空

组件是什么?组件是一段功能代码 ---大白话 就是一段html +js +css 你可以重复使用

封装Vue组件的步骤,以轮播图为例
1 新建vue组件

<template>
  <div>
    <!-- 封装组件1 你把你要封装的代码 放到一个单独的vue组件里面
                2  可以在main.js Vue.component注册组件
                3 哪个组件要用 就直接 使用注册的组件标签名
       -->
    轮播图
    <!-- 封装组件:你就先写死你的代码  然后再考虑 封装问题
      你写了轮播图 那么 其他的就是搞样式 js换一下 比如显示隐藏等等

       写死之后 写完了  就该考虑 数据的问题了?
        1 图片 的数量 不是死的  谁用我的组件 就传数据进来 我循环就行
        2 定时器 时间 能固定2秒吗?也需要传
        3 意思就是 你考虑不能写死的 都传进来
        无缝 就是 最后一张图片和第一张是一样的
           你注意判断条件就行
       -->
    <div class="box">
      <!-- 内层盒子 每隔 2秒 往前滚动 -->
      <ul class="inner" :style="{ left: leftPostion + 'px' }">
        <li class="item" v-for="item in list" :key="item.id">
          <img :src="item.src" alt="" />
        </li>
      </ul>
    </div>
  </div>
</template>

<script>
export default {
  //  这个接受 父传来的数据 props  可以直接用
  props: {
    list: {
      type: Array, //类型
      // default:[] // 数组的默认值不能这样写
      // default:()=>{//数组默认值 要这样
      //    return []
      // }
      default: () => []
    }
  },
  // 这种写法 对象是 复杂类型 这样写 所有导入组件的 会引起冲突
  // 虽然大家 导入很多次组件  指向是一样的
  // data:{
  //   leftPostion:0
  // },
  // 这种函数写法 他每次 都是return 新对象 互相不影响
  data() {
    return {
      leftPostion: 0 // ul 往前移动的距离
    };
  },
  created() {
    // 经常created  发送ajax
    // 页面打开 每隔 2秒 我现在让ul  移动 在哪写?
    //涉及到ul 的dom元素了 所有 必须在mounted写
  },
  mounted() {
    // 这里 页面一定已经渲染元素了
    let i = 0;
    setInterval(() => {
      i++;
      if (i >= 4) {
        i = 0; //还原到头
      }
      // 修改 left的值
      this.leftPostion = -i * 300;
    }, 2000);
  }
};
</script>

<style>
.box {
  width: 300px;
  height: 300px;
  border: 1px solid red;
  overflow: hidden;
}

.box .inner {
  width: 1200px;
  position: relative;
  transition: left 1s;
}

.box .inner li {
  float: left;
  width: 300px;
  height: 300px;
}

.box .inner li img {
  width: 100%;
  height: 100%;
}
</style>


2 Vue.component注册组件

import Swiper from './components/Swiper.vue'
Vue.component("my-swiper",Swiper)

3 在其他组件使用 标签名

上一篇 下一篇

猜你喜欢

热点阅读