Vue项目的记录(五)

Floor 组件开发

  1. 派发action应该是在父组件的组件(Home)挂载完毕生命周期函数中书写,因为父组件需要通知Vuex发请求,父组件获取到mock数据,通过v-for遍历 生成多个floor组件,因此达到复用作用。
    在这里插入图片描述

  2. 父组件(Home)派发action,通知Vuex发请求,Home父组件获取仓库的数据,通过v-for遍历出多个Floor组件。

  3. v-for、v-show、v-if 这些指令可以在自定义标签(组件)的身上使用。
    在这里插入图片描述

  4. 然后将数据渲染上去floor即可,格式如下图
    在这里插入图片描述
    在这里插入图片描述

  5. 这里有个问题就是 为什么在Floor组件的mounted中初始化SWiper实例轮播图可以使用?

    1)第一次书写swiper的时候:在mounted当中(listContainer)书写是不可以的。
    2)第 一次书写轮播图的时候,是在当前组件内部发请求、动态渲梁解构(前台至少服务器数据需要回来) 因此 当时的写法在这里不行
    3)现在的这种写法为什么可以:因为请求是父组件(Home)发的,父组件(Home)通过props传递过来的,而且结构都已经有了的情况下执行mounted,所以结构已经完整
    在这里插入图片描述
    但是我们不这么写,因为他和listContainer里的轮播图的功能一样,我们将他进行封装起来 (当然不封装也可以)为了统一写法然后进行封装,因此我们统一写成 watch + $nextTick 的形式,然后进行封装

轮播图摘过来
Carousel.vue 将这个组件注册为全局组件

<template>
  <!-- 轮播图 -->
  <div class="swiper-container" ref="cur">
    <div class="swiper-wrapper">
      <div
        class="swiper-slide"
        v-for="(carousel, index) in list"
        :key="carousel.id"
      >
        <img :src="carousel.imgUrl" />
      </div>
    </div>
    <!-- 如果需要分页器 -->
    <div class="swiper-pagination"></div>

    <!-- 如果需要导航按钮 -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
  </div>
</template>

<script>
import Swiper from 'swiper'
export default {
  name: "Carousel",
  props: ['list'],
  watch: {
    list: {
      //立即监听:不管数据有没有变化,上来就监听一次
      // 这里监听不到list的变化,因为这个数据从来没有变化,
      //(数据都是父亲(home)给的,父亲给的时候就是一个对象)
      immediate: true,
      handler(newValue, oldValue) {
        this.$nextTick(() => {
          var mySwiper = new Swiper(this.$refs.cur, {
          loop: true, // 循环模式选项

          // 如果需要分页器
          pagination: {
            el: ".swiper-pagination",
            clickable:true //点击小球也切换图片
          },

          // 如果需要前进后退按钮
          navigation: {
            nextEl: ".swiper-button-next",
            prevEl: ".swiper-button-prev",
          },
        });
        })
      }
    }
  }
};
</script>

<style>
</style>

floor中的使用
在这里插入图片描述
listContainer中的使用
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue项目可以使用CIM(Cookies-IndexedDB-LocalStorage-MemoryDB)作为数据存储方式。 CIM是一种将不同的数据存储方式结合起来使用的方法。在Vue项目中,我们可以将Cookies、IndexedDB、LocalStorage和MemoryDB结合起来使用,以满足不同的需求。 首先,在Vue项目中,我们可以使用Cookies来存储一些简单的键值对数据。Cookies是一种在浏览器端存储数据的方式,它可以保存在用户的计算机上,并且在不同的页面之间共享。如果我们需要存储一些小型的数据,比如用户的登录信息或者一些用户偏好设置,Cookies是一个很好的选择。 其次,IndexedDB是一种在浏览器中存储结构化数据的方式。在Vue项目中,我们可以使用IndexedDB来存储一些复杂的数据,比如一些对象或者数组。IndexedDB提供了一些强大的查询和索引功能,使得我们可以更方便地操作这些数据。 LocalStorage是另一种在浏览器中存储数据的方式。与Cookies相比,LocalStorage可以存储更多的数据,并且不会随着请求发送到服务器。在Vue项目中,LocalStorage可以用来存储一些中等大小的数据,比如用户的一些浏览记录或者临时数据。 最后,MemoryDB是一种在内存中存储数据的方式。在Vue项目中,我们可以使用MemoryDB来存储一些临时的数据,比如一些计算中间结果或者一些缓存数据。MemoryDB的读写速度非常快,并且数据存储在内存中,可以快速地访问和修改。 综上所述,Vue项目可以使用CIM(Cookies-IndexedDB-LocalStorage-MemoryDB)作为数据存储方式,根据不同的需求选择合适的方式存储数据。这种方式可以满足不同类型和大小的数据存储需求,使得项目更加灵活和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值