赞
踩
pnpm create vite vue3-vant4-vite-pinia-pro-h5
pnpm add vant
注意: 具体的一些配置这里就不介绍了,可以去 vant-ui官网 查看详细的安装和配置
import request from "@/utils/request";
// banner 列表
export const getBannerList = (params) => request.get(`/goodsBanner/list`, { params });
// 菜单列表
export const getMenuList = (params) => request.get(`/homeMenu/getList`, { params });
简要说明:
globalComponents : 全局组件,已经全局注册 【页面使用不需要引入】(一般很常用的组件放这里)
localComponents : 本地组件, 没有全局注册 【页面使用需要手动引入】(一般不常用的可以放这里)
registerGlobComp: 组件注册文件,注册全局组件和vant-ui组件【vant-ui组件我这里用的是按需引入,需要手动引入】,如何想全局引入vant-ui组件,可以去 vant-ui官网 查看
const rotateDirective = { /** * mounted 钩子函数,在绑定元素的父组件及他自己的所有子节点都挂载完成后调用 * el: 指令绑定到的元素。这可以用于直接操作 DOM。 * value: 传给指令的值,也就是我们要 copy 的值 */ mounted(el, { value }) { // console.log("value==:", value, typeof value); el.$value = value; // 用一个全局属性来存传进来的值,因为这个值在别的钩子函数里还会用到 // el.className = 'v-rotate' el.classList.add("v-rotate"); if (typeof value === "undefined") return; el.style.display = value ? "block" : "none"; }, // 在绑定元素的父组件及他自己的所有子节点都更新后调用 updated(el, { value }) { // console.log("更新触发", value); if (typeof value === "undefined") return; el.style.display = value ? "block" : "none"; }, // 指令与元素解绑后,移除事件绑定 unmounted(el) { el.classList.remove("v-rotate"); }, }; export function setupRotateDirective(app) { app.directive("rotate", rotateDirective); } export default rotateDirective;
<SvgIcon v-rotate icon-class="loading" />
import { showLoadingToast } from "vant"; import { onBeforeUnmount } from "vue"; export function useLoading() { let toast = null; const startLoading = () => { toast = showLoadingToast({ duration: 0, forbidClick: true, message: "加载中...", overlay: true, }); }; const stopLoading = () => { toast && toast.close(); }; onBeforeUnmount(stopLoading); return { startLoading, stopLoading }; }
// 引入
import { useLoading } from '@/hooks/useLoading'
// 导出
const { startLoading, stopLoading } = useLoading()
// 接口调用
startLoading()
getBannerList().then((res) => {
stopLoading()
console.log("数据:", res);
const list = res.result || [];
list.map(
(v) => (v.url = v.url.includes("http") ? v.url : `http://${v.url}`)
);
bannerList.value = list;
});
import { createPinia, defineStore } from "pinia"; // 引入持久化插件 import piniaPluginPersistedstate from "pinia-plugin-persistedstate"; // 实例化pinia export const store = createPinia(); // 使用持久化存储插件 store.use(piniaPluginPersistedstate); // 系统统一存储 export const useAppStore = defineStore("app", { state: () => ({ appName: "我是app名称", }), actions: { // 设置app名称 setAppName(data) { this.appName = data; }, }, persist: { storage: localStorage, //default localStorage }, });
https://gitee.com/junfeng535/vue3-vant4-vite-pinia-pro-h5.git
https://github.com/junfeng-git/vue3-vant4-vite-pinia-pro-h5.git
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。