最近在review自己写的代码时发现,在很多的地方都用了以下的代码块

 1 async initCode() {
2 const resSource = await this.$API.syscode.list.get({
3 typeCode: "source",
4 type: 3,
5 });
6 if (resSource.code == 200) {
7 resSource.data.forEach((e) => {
8 this.sourceOptions.push({
9 label: e.name,
10 value: e.id,
11 });
12 });
13 }
14 const resLevel = await this.$API.syscode.list.get({
15 typeCode: "level",
16 type: 3,
17 });
18 if (resLevel.code == 200) {
19 resLevel.data.forEach((e) => {
20 this.levelOptions.push({
21 label: e.name,
22 value: e.id,
23 });
24 });
25 }
26 const resIndustry = await this.$API.syscode.list.get({
27 typeCode: "industry",
28 type: 3,
29 });
30 if (resIndustry.code == 200) {
31 resIndustry.data.forEach((e) => {
32 this.industryOptions.push({
33 label: e.name,
34 value: e.id,
35 });
36 });
37 }
38 const resCity = await this.$API.syscity.list.get();
39 let _tree = [];
40 resCity.data.some((m) => {
41 _tree.push({
42 id: m.id,
43 value: m.name,
44 label: m.name,
45 parentId: m.parentId,
46 });
47 });
48 this.cityOptions = this.$TOOL.changeTree(_tree);
49 },

其中主要是调用 await this.$API.syscode.list.get  api接口返回一组可用的数组数据,这种代码在项目存在很多所以想有没有办法优化一下。

于是在vue官方文档中找到了这个 混入 — Vue.js (vuejs.org)

同时询问了chatgpt同样给出了相同解决方案,于是根据文档写一个了,并运行成,惊喜不错。

第一步:新建一个  mixin.js,写如下代码

export default {
data() {
return {};
},
methods: {
async mixinCodeSelect(code, type) {
const res = await this.$API.syscode.list.get({
typeCode: code,
type: type,
});
let arr = [];
if (res.code == 200) {
res.data.forEach((e) => {
arr.push({
label: e.name,
value: e.id,
});
});
}
return arr;
},
},
};

该方法是返回一个基于下拉框的数据,调用 mixinCodeSelect 方法需要传入2个参数。

第二步:在vue页面中使用

引入  import mixin from '@/utils/mixin.js';

在methods中调用minxin里面的方法即可,如下:

mounted() {
this.initCode();
},
methods: {
async initCode() {
this.typeIdOptions=await this.mixinCodeSelect('contract-type',3);
},
}

  

这样就简单很多了,代码看着也清爽了。

vue2 混入 (mixin) 带来的小惊喜的更多相关文章

  1. 用特征来实现混入(mix-in)式的多重继承

    用特征来实现混入(mix-in)式的多重继承 Scala里相当于Java接口的是特征(Trait).Trait的英文意思是特质和性状(本文称其为特征),实际上他比接口还功能强大.与接口不同的是,它还可 ...

  2. Vue Mixin 与微信小程序 Mixins 应用

    什么是Mixin(混入) Mixin是一种思想,用来实现代码高度可复用性,可以针对属性复制实现代码复用的想法进行一个扩展,就是混入(mixin).混入并不是复制一个完整的对象,而是从多个对象中复制出任 ...

  3. 应用三:Vue之混入(mixin)与全局混入

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 首先介绍一下混入mixin的概念:   官方文档:混入提供了一种非常灵活的方式,来分发 Vu ...

  4. vue混入 (mixin)的使用

    混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项. 使用示 ...

  5. Vue之混入(mixin)与全局混入

    Vue之混入(mixin)与全局混入 接下来通过一个简单的例子看看混入的基础用法: 首先新建一个mixin.js文件,添加以下代码. let mixin = { data() { return { m ...

  6. vue 混入 mixin,自定义指令,过滤器

    vue 混入 mixin ,分发 vue 组件中重复的功能 局部的书写格式 // mixin.js var mymixin = {  // 这是一个对象:对象里面的写法与组件里面的写法一模一样,组件该 ...

  7. vue混入mixin的使用,保证你看的明明白白!

    场景描述 有些时候,我们发现有些组件部分功能代码是几乎是一样的. 这个时候,我们就可以将相同的逻辑代码抽离出来 此时我们的主角混入mixin就登场了 下面我们有a-test和b-test两个组件,点击 ...

  8. 在小程序中实现全局混入,以混入的形式扩展小程序的api

    GitHub: https://github.com/WozHuang/mp-extend 相关文章: 小程序全局状态管理,在页面中获取globalData和使用globalSetData 通过页面预 ...

  9. 浅析vue混入(mixin)

    vue中的混入,可以在一定程度上提高代码的复用性.通俗来说,混入类似于“继承”,当前组件对象继承于组件对象,一般情况下遵循“就近原则”.但是与继承不同的是,继承一般都跟随着属性的重写与合并,混入在不同 ...

  10. Spark给我们带来了什么惊喜?

    Spark的一站式解决方案有很多的优势,具体如下.(1)打造全栈多计算范式的高效数据流水线     Spark支持复杂查询. 在简单的“map”及“reduce”操作之外,Spark还支持SQL查询. ...

随机推荐

  1. rerank来提升RAG的准确度的策略

    RAG(Retrieval-Augmented Generation)是一种结合检索和生成两种技术的模型,旨在通过检索大规模知识库来增强文本生成任务的准确性. 要通过reranking(重排序)来提升 ...

  2. 2018-3-8-WPF-UncommonField-类型是什么

    title author date CreateTime categories WPF UncommonField 类型是什么 lindexi 2018-3-8 16:25:2 +0800 2018- ...

  3. k8s核心资源Job&&CronJob调度pod

    一.Job与CronJob概念与与原理解读 Job 控制器用于管理 Pod 对象运行一次性任务,比方说我们对数据库备份,可以直接在 k8s 上启动一个 mysqldump 备份程序,也可以启动一个 p ...

  4. 【web安全】隐藏nginx头文件信息

    摘要 Nginx作为开源web中间件,被广泛应用.因此源编译或者yum安装,都会带有其原有的nginx版本.很容易被针对,因此,通过修改nginx的源码.隐藏nginx版本和头部信息,保障nginx的 ...

  5. Java中的多态、抽象类和接口简述

    1. 引言 本文对Java编程中的多态.抽象类和接口概念进行了简明扼要的讲解,并对extends和implements进行了辨析. 2. 多态 多态是指所调用的方法只有在运行的时候才可以明确,如下例所 ...

  6. SATA与PCI-E速度对比

    SATA SATA接口已经发展到了第三代,理论上的最大速度达到600MB/s.平时大家见到的SATA SSD使用的都是SATA三代,实际测试速度在550MB/s左右,这比普通的机械硬盘的速度100MB ...

  7. JSON字符串数据转换指定实体对象数据

    一.引入需要的maven依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId> ...

  8. Linux(五):Linux的文档编辑器Vi

    什么是Vi 我们使用Windows的时候,记录或者存储信息,一般都是txt文本编辑,记事本,word文档等等,进行编程的时候,使用idea,eclipse等等,但是在Linux中,就比较直接了,不论你 ...

  9. 【OpenVINO™】在 C# 中使用OpenVINO™ 部署PP-YOLOE实现物体检测

     前言 OpenVINO C# API 是一个 OpenVINO 的 .Net wrapper,应用最新的 OpenVINO 库开发,通过 OpenVINO C API 实现 .Net 对 OpenV ...

  10. 热更学习笔记--toLau中lua脚本对C#中枚举和数组的访问

    [8]Lua脚本调用C#中的枚举学习 --调用枚举类型 print("----------------------toLua中调用C#中枚举类型----------------------- ...