在vue中封装useIntro来更好的使用Intro.js

Intro.js 是一个用于创建交互式引导和教程的 JavaScript 库。它可以帮助你向用户展示应用程序的功能、导航和特性,并提供步骤指导,以便他们更好地理解和使用你的应用。

为什么需要去封装

  1. 封装初始化配置,避免在项目中每处使用都去配置
  2. 优化使用体验,保证每次调用尽可能少的去写冗余的内容
  3. 针对SPA,使用onUnmounted确保切换页面效果正常,且在调用处无需手动处理页面卸载的情况

具体封装

首先安装intro.js

shell 复制代码
pnpm add intro.js
js 复制代码
import type { Options } from 'intro.js/src/option'
import type { IntroStep } from 'intro.js/src/core/steps'
import introJs from 'intro.js'
import 'intro.js/minified/introjs.min.css'
// 自定义覆盖的intro样式
import './assets/introJs.css'

export const useIntro = (steps: Partial<IntroStep>[], options?: Partial<Options>) => {
  const intro = introJs().setOptions({
    // 配置项目需要的默认初始值
    exitOnEsc: false,
    hidePrev: true,
    exitOnOverlayClick: false,
    showButtons: false,
    showBullets: false,
    steps,
    ...options,
  }).onbeforechange(async () => {
    // 每次切换前增加0.5s延迟 
    return new Promise((resolve) => {
      setInterval(resolve, 500)
    })
  })

  function stop() {
    intro.exit(true)
  }

  function start() {
    nextTick(() => {
      intro.start()
    })
  }

  function next() {
    intro.nextStep()
  }

  onUnmounted(() => {
    stop()
  })
  
  // 导出
  return {
    intro, stop, start, next,
  }
}

导出一共四个内容

  • intro: 当前intro.js的实例,可以根据文档调用实例方法
  • stop: 关闭当前引导
  • start:开始引导
  • next:手动下一步

业务使用

js 复制代码
const { intro, start, next } = useIntro([
  {
    element: '#album',
    intro: '选择素材',
  },
  {
    element: '#add',
    intro: '确认添加',
    position: 'top',
  },
])

封装后使用更加便利,只需要传入对应的步骤即可,无需其他额外处理

相关推荐
Csvn1 小时前
运行时性能
前端
Never_every992 小时前
位图转矢量工具哪个好?实测抠抠图AI位图转矢量工具
大数据·前端
paopaokaka_luck2 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
空中湖2 小时前
用 React 写数据大屏:为什么我不建议用图表库
前端·react.js·前端框架
欣欣之王来了4 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
IT_陈寒4 小时前
Redis的LRU淘汰策略坑了我一整天
前端·人工智能·后端
计算机魔术师4 小时前
砍半价格、参数再涨,国产旗舰追到 Opus 鼻尖了
前端
paopaokaka_luck4 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
特立独行的猫A4 小时前
10 MB 的桌面 AI 客户端:用仓颉 + 系统 WebView 替代 Electron
前端·harmonyos
修炼的dance5 小时前
白底图存JPG,sharp开mozjpeg背景杂点少近三成
前端