vue开发抽取组件方式思路

例如如果跳转参数统一的话可以抽取一个方法挂载到vue;

/**
 * 审批列表跳转
 * @param {String} name 跳转路由
 * @param {Object} row 所选数据项
 * @param {Object} query 其他需要跳转的参数
 */
Vue.prototype.$goApproval = function (name, row, query) {
  this.$router.push({
    name,
    query:{
      dataId: row.id,
      dataStatus: row.auditStatus,
      currentAuditNum: row.currentAuditNum,
      auditNode: row.workflowAuditNode,
      instId: row.workflowInstId,
      workflowTaskId: row.workflowTaskId,
      type: "add",
      ...query
    },
  })
};

这样就可以在页面统一使用 this.$goApproval() 进行跳转  后面方便统一修改

一般通用的弹窗类型组件可以抽取成一个组件挂载到vue;Vue.extend => Vue 构造器

Vue 基础知识之 Vue.extend - 绅士喵呜 - 博客园

将普通的Vue组件封装成以方法形式调用的组件;

/ *
 * @param {VueComponent} Component - Vue组件
 * @param {Object} defaultProps - 默认props
 * @returns {Function}
 */
export function useFunctionComponent(Component, defaultProps) {
  return function (props = {
  }) {
    let _Component = Vue.extend(Component);
    return new Promise((resolve, reject) => {
      let vm = new _Component({
        data: {
          props: {
            ...defaultProps,
            ...props,
          },
          resolve,
          reject,
        }
      });
      vm.$mount();
      vm.visible = true;
    });
  }
}
/**
 * 以方法调用组件时,需要混入的属性
 * 一般都是弹窗类型的组件
 * @see {@link useFunctionComponent}
 * @returns {Object} 混入属性
 */
export function functionComponentMixins() {
  return {
    data() {
      return {
        visible: false,
        props: {},
        resolve: () => { },
        reject: () => { }
      }
    },
    watch: {
      visible(val) {
        if (val === false) {
          this.$destroy();
        }
      },
    }
  }
}
//使用
import Component from './index.vue';
import { useFunctionComponent } from '../../utils/useFunctionComponent';

export default useFunctionComponent(Component, Component.data().props)


//index.vue
this.resolve(true);

vue组件优化:

组件传默认值  defaultkeys  暴露formatter来使用

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值