美文网首页
Vue中mixins的使用(对重复的代码说goodbye)

Vue中mixins的使用(对重复的代码说goodbye)

作者: hello_web_Front | 来源:发表于2020-11-03 14:32 被阅读0次

不知道你们有没有这样的一个感觉,尤其是在写后台管理系统的时候(因为后台管理大部分都是表格,所以几乎每一个路由都有表格,那这样的话我们每次写一个页面的增删改查的时候都需要重复的取获取表格的数据,以及分页的total等等。。),你会发现这个tableData我不是刚刚在那个页面写过吗?tableData和分页的total我不是已经在上一个页面上的data上写过,到头来就是ctrl+c,ctrl+v。大家都是聪明人,肯定不会写重复的代码。
直接上需求:
下面两个不同页面,但是结构都是一样的。


1604408589(1).png 1604408600(1).png

可以看部分代码看出。分页每个页面都会有(handleSizeChange,handleCurrentChange),表格初始化每个页面也都有,那么我每个页面都写一次??? 我一开始是这么干的。。。
代码部分

============表格初始化===========
    async initTable(name) {
      let obj = Object.assign({}, this.queryInfo);
      const res = await name(obj);
      if (res.status == 200) {
        this.total = res.result.total;
        this.endPagination = res.result.endRow;
        this.startPagination = res.result.startRow;
        this.tableData = res.result.list;
      }

      console.log(res);
    }
============分页===================
      <div class="f-md main-text-color d-flex a-center" style="">
        <div>显示第 {{ startPagination }} 到第 {{ endPagination }} 条记录</div>
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="queryInfo.pageNum"
          :page-sizes="[5, 8, 10, 12]"
          :page-size="queryInfo.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
        >
        </el-pagination>
      </div>

使用mixin之后
先新建一个mixin.js,代码如下:

var myMixin = {
  data() {
    return {
      startPagination: "",
      endPagination: "",
      total: null,
      tableData: [],
    };
  },
  created: function() {},
  methods: {
    handleSizeChange(size) {
      this.queryInfo.pageSize = size;
      this.initTable();
    },
    handleCurrentChange(page) {
      this.queryInfo.pageNum = page;
      this.initTable();
    },
    async initTable(name) {
      let obj = Object.assign({}, this.queryInfo);
      const res = await name(obj);
      if (res.status == 200) {
        this.total = res.result.total;
        this.endPagination = res.result.endRow;
        this.startPagination = res.result.startRow;
        this.tableData = res.result.list;
      }

      console.log(res);
    },
  },
};

export default myMixin;

使用:在每个页面引入这个js文件然后使用mixins:[myMixin]即可,官方地址:https://cn.vuejs.org/v2/guide/mixins.html
到此就完成了!

补充

mixin与Vuex的区别
Vuex是全局状态管理,多个页面公用一个数据,一个页面修改了数据,其他的页面也会随之改变,但是mixin则不然,它的原理是想data methods上注入数据,每个页面注入之后都会变成当前data上的数据。
具体看下图 代码对比 我并没有在data上写这个数据 但是data却有这个数据


1604409400(1).png 1604409420(1).png

相关文章

  • Vue中mixins的使用(对重复的代码说goodbye)

    不知道你们有没有这样的一个感觉,尤其是在写后台管理系统的时候(因为后台管理大部分都是表格,所以几乎每一个路由都有表...

  • vue2中的mixins

    mixins: 混合对象, 功能类似于Vue.extend(); 使用时,在组件的选项中添加mixins: [mi...

  • Less简明笔记

    1. 使用@新建变量 在css中使用变量: 2. Mixins 首先定义样式: 以后可在其他代码块中重复使用: 3...

  • vue中mixins的使用

    组件内使用mixin 全局使用mixin(使用Vue.mixin()方法) 参考:https://www.jian...

  • 16-Vue之混入mixin的使用

    Vue之混入mixins(非完整版) 一、mixins基础介绍(不使用cli版本) 1.首先我们看一下vue官网对...

  • Vue 之 Mixins (混入)

    Mixins Mixins是一种分发Vue组件中可复用功能的非常灵活的一种方式。 什么时候使用Mixins 页面的...

  • Vue 混入(mixins和Vue.mixin)

    1.mixins和Vue.mixin mixins 混入 (mixins) 是一种分发 Vue 组件中可复用功能的...

  • render + mixins 写法,基础篇

    vue中使用 render + mixins 写法,极大程度简化代码开发 背景介绍 常规的列表页面开发页面展示 组...

  • vue mixins的使用

    mixins是一种将组件功能复用的方式,简单来说就是讲组件的数据、钩子、方法、等封装在一个对象里面,然后在组建中m...

  • mixins

    vue混入(mixins) 简介 混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混...

网友评论

      本文标题:Vue中mixins的使用(对重复的代码说goodbye)

      本文链接:https://www.haomeiwen.com/subject/vzgbvktx.html