vue3 双重for循环 ts定义类型

这是一个使用Vue3编写的电商应用页面模板,包含自动轮播的商品图片展示区,导航链接以及商品楼层结构,每个楼层有商品列表。轮播图数据、导航条目和商品楼层信息都通过refs进行管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 案例

<template>
<view class="slider">
      <swiper autoplay interval="2000" circular indicator-dots indicator-color="rgba(255,255,255,1)"
        indicator-active-color="rgba(255,255,255,.6)">

        <swiper-item v-for="(item) in  swipers " :key="(item as Swipers).goods_id">
          <navigator :url="`/packone/goods/index?id=${(item as Swipers).goods_id}`">
            <image :src="(item as Swipers).image_src" />
          </navigator>
        </swiper-item>

      </swiper>
    </view>
    <!-- 功能导航 -->
    <view class="navs">

      <navigator v-for=" item  in  navs " :key="item.name"
        :url="item.navigator_url ? '/pages/category/index' : '/packone/list/index?query=' + item.name">
        <image :src="item.image_src" />
      </navigator>

    </view>
    <!-- 栏目楼层 -->
    <view class="floors">
      <!-- 1 -->
      <view class="floor" v-for=" item  in  floors " :key="item.index">
        <!-- title -->
        <view class="ftitle">
          <image :src="item.floor_title.image_src" />
        </view>
        <!-- pics -->
        <view class="fitem">
          <navigator url v-for=" item2  in  item.product_list " :key="item2.index">
            <image :src="item2.image_src" />
          </navigator>
        </view>
      </view>

    </view>
</template>
<script setup lang="ts">

    interface Swipers {
      goods_id: number
      image_src: string
    }

    interface NavItem {
      name: string;
      navigator_url?: string;
      image_src: string;
    }

    interface ProductListItem {
      index: number;
      image_src: string;
    }

    interface floors {
      index: number
      floor_title: {
          name: string
          image_src: string
      }
      product_list: ProductListItem[]
    }    

    const swipers = ref([])//轮播图数据
    const navs = ref<NavItem[]>([]) //导航
    const floors = ref<floors[]>([])//商品楼层数据
</script>

在axios请求中使用TypeScript实现双token的逻辑,当token过期时中断请求,并将中断的请求都存到数组中,使用refreshToken获取token,获取token成功后,将token和refreshToken存储在本地,重新发送之前中断的请求。在下面代码中加入双token的逻辑。 import type { CustomAbortController, UseRequestWrapperConfig, UseRequestWrapperExecConfig, } from &#39;./types.ts&#39; import useGlobalLoadingStore from &#39;@/store/useGlobalLoadingStore.ts&#39; import { onTokenExpired } from &#39;@/utils/business.ts&#39; import { AxiosError, CanceledError } from &#39;axios&#39; import { onMounted, onUnmounted, ref } from &#39;vue&#39; import { ResponseError } from &#39;./_base.ts&#39; function useRequestWrapper<T>(wrapperConfig: UseRequestWrapperConfig<T>) { const globalLoadingStore = useGlobalLoadingStore() const { requestFn, onError, onSuccess } = wrapperConfig /** * is interrupt prev request */ let interruptPrevRequest = false /** * is use global loading */ let globalLoading = false /** * is show overlay when global loading */ let globalLoadingOverlay = false /** * loading */ const isLoading = ref(false) function openLoading() { isLoading.value = true globalLoading && globalLoadingStore.openGlobalLoading(globalLoadingOverlay) } function closeLoading() { isLoading.value = false globalLoading && globalLoadingStore.closeGlobalLoading(globalLoadingOverlay) } /** * is error happen */ const isError = ref(false) const data = ref<T>() function setData(next?: T) { data.value = next } /** * abort request controller */ const abortController: CustomAbortController = { _value: new AbortController(), get value() { if (this._value && !this._value.signal.aborted) { return this._value } else { this._value = new AbortController() return this._value } }, abort() { abortController.value.abort() }, } /** * request execute * @param execConfig request execute config */ async function exec(execConfig?: UseRequestWrapperExecConfig) { if ( (wrappe
03-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值