vue mixin混入与hook

mixin混入是 ‌选项式 API‌,在vue3-Composition API <script setup> 中无法直接使用,需通过 setup() 函数转换

vue2、vue3选项式API:

js 复制代码
// mixins/mixin.js
export const mixin = {
  methods: {
    courseType(courseLevel) {
      const levelMap = {
        1: '初级',
        2: '中级',
        3: '高级'
      };
      return levelMap[courseLevel] || '';
    }
  }
}
组件引入mixin
html 复制代码
<template>
  <view>
    <!-- 直接调用混入的 courseType 方法 -->
    <text>课程等级: {{ courseType(level) }}</text>
  </view>
</template>
js 复制代码
import { mixin } from '@/mixins/mixin.js';
export default {
  mixins: [mixin],
  mounted() {
    console.log(this.courseType(2)); // 输出 "中级"
  }
}
在vue3-Composition API 组件(<script setup>)‌无法直接使用,需通过 setup() 函数转换:

vue3-Composition API 推荐使用 ‌自定义 Hook‌ 替代混入

js 复制代码
// hooks/useCourseLevel.js
export function useCourseLevel() {
  const courseType = (courseLevel) => {
    const levelMap = {
      1: '初级',
      2: '中级',
      3: '高级'
    };
    return levelMap[courseLevel] || '';
  };
  return {
    courseType
  };
}
组件中使用
js 复制代码
<script setup>
import { useCourseLevel } from '@/hooks/useCourseLevel.js';

const { courseType } = useCourseLevel();
</script>

// html
<!-- 级别 -->
<view class="descript">{{ courseType(courseLevel) }}</view>
 
相关推荐
2601_962122975 小时前
nginx 部署前端vue项目
前端·vue.js·nginx
码视野5 小时前
基于 Spring Boot + Vue3 的【城市道路地下空洞塌陷微动传感监测与路面脱空沉降预警中台】设计与实现(含PRD/三端高保真源码/大屏)
vue.js·spring boot·后端
雪芽蓝域zzs5 小时前
第三节:目录结构重构(仿若依,优化层级,layout 与 components 同级)
前端·vue.js·重构
雪芽蓝域zzs8 小时前
第八节:Element Plus 基础、封装通用组件 + 路由守卫
前端·vue.js
码视野8 小时前
基于 Spring Boot + Vue3 的【智慧公厕微负压排风除臭与客流人感空间占用导引中台】设计与实现(含PRD/三端高保真源码/大屏)
前端·vue.js·人工智能·spring boot·后端
2601_9620715710 小时前
Java进阶(vue基础)
前端·javascript·vue.js
雪芽蓝域zzs11 小时前
第十节:动态侧边栏菜单(根据路由 meta 自动渲染菜单)
javascript·vue.js·elementui
浪兎兎11 小时前
Vue CLI笔记
前端·vue.js·笔记
前端炒粉11 小时前
容器预热预跳转方案
前端·vue.js·性能优化