# 行为插件

行为插件@sula/plugin-action,为Sula内部的组件和模板,提供点击元素后触发特定操作行为的能力,使用者可以直接在配置参数中基于action属性,对特定元素进行点击行为的配置

示例:

import SulaTable from '@sula/form';

<SulaTable
  columns={[
    {
      title: 'operation',
      render: {
        type: 'icon',
        props: {
          type: 's-refresh',
        },
        action: {
          type: 'refresh'
        }
      }
    }
  ]}
/>

# API

行为插件action配置对应的类型:actionType,支持配置属性如下:

# type

  • 类型:string | (ctx, config) => HTMLElement | ReactNode
  • 默认值:-

操作行为类型,可配置类型见下方插件介绍, 当没有同级属性时,type指支持直接配置在action属性上

示例:

action: {
  type: 'reset',
}

//等价于
action: 'reset'

action: {
  type: (ctx) => { console.log('refresh') }
}

//等价于
action: (ctx) => { console.log('refresh') }

# finish

action对应type的操作完成后触发的操作,配置方式同actionType,支持嵌套配置finish

示例:

action: {
  type: 'reset',
  finish: {
    type: 'refresh',
    finish: (ctx) => { console.log('refresh finish') }
  }
}

tips

  • finish配置与action配置唯一不同的是,不再支持confirm、tooltip的配置

# final

  • 类型:(ctx) => void
  • 默认值:-

action——>finish——>finish...操作链完成后最后执行的方法,无论操作链成功和失败都会执行

示例:

action: {
  type: 'fetch',
  final: () => {
    console.log('finally');
  }
}

tips

  • Sula内无论是基础组件还是上层模板,关于action操作行为的配置方式都是遵循同样的原则
  • action属性需配置在渲染配置render属性中
  • 配置参数均支持字符串、模板字符串、方法
  • action内部配置的方法会在点击行为触发时才解析执行
  • 除上述参数外,也可进行在同级进行一些额外的配置,支持模板字符串和方法,并会解析后,在type接收方法时第二个参数config中体现

# error

action返回Promise reject时触发,同时行为链将中断

示例:

action: [
  {
    type: () => Promise.reject(),
    error: () => console.log('出错了'),
    final: () => console.log('无论如何都会执行')
  },
  () => console.log('上一步出错了,不会打印')
]

# 表格行为插件

# reset

重置表格分页、过滤条件等信息,刷新表格数据。调用表格实例方法 reset()

示例:

action: {
  type: 'reset',
}

# refresh

根据表格当前的设置重新请求,刷新表格数据。调用表格实例方法 refresh()

示例:

action: {
  type: 'refresh',
}

# modalform

通常结合表格操作列使用,点击配置项时弹出带有表单的弹框

示例:

action: {
  type: 'modalform',
  formProps: {
    fields: [
      {
        name: 'name',
        label: 'Name',
        render: 'input',
      }
    ]
  },
  props: {},
  submit: {
    url: '/api/info.json',
  },
}

type同级可配置属性同ModalForm属性配置

# upload

上传文件

示例:

action: {
  type: 'upload',
  url: 'https://www.mocky.io/v2/5cc8019d300000980a055e76',
  params: {
    name: 'sula'
  }
}

# download

下载文件

示例:

action: {
  type: 'download',
  url: '/api/download',
  params: {
    name: 'sula'
  },
}

# fetch

下载文件

示例:

action: {
  type: 'fetch',
  url: 'https://jsonplaceholder.typicode.com/posts',
  method: 'post',
  final: () => {
    console.log('finally');
  }
}

# 表单弹框行为插件

ModalForm组件内部支持该配置

# close

触发关闭弹框,调用ModalForm实例方法close()

action: {
  type: 'close',
}

# umi行为插件

umi项目,插件umi-plugin-sula为我们提供更多的action可配置类型,详情见umi 插件

Last Updated: 2020/3/1 下午11:30:01