最近在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. KubeVela 1.1 发布,开启混合环境应用交付新里程碑

    ​简介: KubeVela 作为一个开箱即用.面向现代微服务架构的应用交付与管理平台,今天正式发布了 1.1 版本,以更加用户友好和完善的功能集,开启了"让混合环境应用交付更加简单高效&qu ...

  2. 技术干货|基于Apache Hudi 的CDC数据入湖「内附干货PPT下载渠道」

    ​简介: 阿里云技术专家李少锋(风泽)在Apache Hudi 与 Apache Pulsar 联合 Meetup 杭州站上的演讲整理稿件,本议题将介绍典型 CDC 入湖场景,以及如何使用 Pulsa ...

  3. dotnet C# 获取当前设备可移动磁盘

    本文告诉大家如何获取当前设备的可移动磁盘 在我的 WPF 应用里面,期望获取到 U 盘的所在盘进行一些有趣的逻辑.可以通过 DriveInfo 类的 GetDrives 获取当前所有的驱动器磁盘 再通 ...

  4. STM32定时器原理

    一.简介 不同的芯片定时器的数量不同,STM32F10x中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器. 基本定时器:TIM6. ...

  5. Modelsim使用指南

    Modelsim使用指南 本文讲述Modelsim的使用步骤. 添加一个测试文件,比如modulename.v. 编辑这个Verilog模块. 为了方便讲述,顶层模块名命名为"top&quo ...

  6. 4.10 + (double)(rand()%10)/100.0

    黑色星期四 坏消息: 没有奥赛课,所以大概率调不出来 CF1479D 好消息: 5k 回来了,调题有望 中午起床直接来的机房,有学科自习就说 氟硫氢 不知道 结果被叫回去了 而且今天班里没水了,趁着大 ...

  7. shell 去掉逗号_shell替换和去掉换行符

    用shell处理文件的时候我们常常需要去掉或者加上换行符,name问题就来了怎么才能快速的替换呢? 我们有这样一个文件[root@hxy working]# cat 1 GD200A16C013493 ...

  8. JWT 构建Rails API 授权登录

    目录 安装jwt组件 创建base_controller.rb控制器 配置路由 用户登陆-api接口 验证用户token信息-api接口(*) 参考下面的连接 使用Rails构建JSON-API ht ...

  9. linux文本三剑客之sed命令详解

    linux文本三剑客之sed命令详解 目录 linux文本三剑客之sed命令详解 1.sed命令详解 1.1 地址定界和编辑命令 1.2 搜索替换 1.3 sed高级用法 1.sed命令详解 sed称 ...

  10. 5GC 关键技术之 CUPS(控制与用户面分离)

    目录 文章目录 目录 前文列表 CUPS(控制与用户面分离) 前文列表 <简述移动通信网络的演进之路> <5G 第五代移动通信网络> <5GC 关键技术之 SBA(基于服 ...