简体中文 | [English](/docs/en/develop/3-11-Action-introduction.md) # 用途 - 配置资源对应的所有操作 ![操作](/docs/zh/develop/images/form/action.png) - 按照相应的配置编写后,会在资源列表页相应的位置展示相应的操作按钮 # 代码位置 - `pages/xxxx/containers/XXXX/actions/index.jsx` # 如何使用 - 返回一个对象,其内配置主操作按钮、批量操作按钮、行操作按钮 - 以网络`src/pages/network/containers/Network/actions/index.jsx`为例 - 配置了主按钮为创建 - 配置了批量操作为删除 - 配置了行操作为编辑、创建子网、删除 ```javascript import CreateNetwork from './CreateNetwork'; import CreateSubnet from './CreateSubnet'; import DeleteAction from './Delete'; import Edit from './Edit'; const actionConfigs = { rowActions: { firstAction: Edit, moreActions: [ { action: CreateSubnet, }, { action: DeleteAction, }, ], }, batchActions: [DeleteAction], primaryActions: [CreateNetwork], }; export default actionConfigs; ``` - 在资源对应的列表代码中配置`actionConfigs`即可 - 以网络`src/pages/network/containers/Network/ProjectNetwork.jsx`为例 ```javascript import actionConfigs from './actions'; get actionConfigs() { return actionConfigs; } ``` ## 主操作按钮配置`primaryActions` - 返回组件的列表 - 如果没有主按钮,可以设置为`null`或`[]` - 如果不可操作(比如权限不够),将自动隐藏 ## 批量操作按钮配置`batchActions` - 返回组件的列表 - 如果没有批量按钮,可以设置为`null`或`[]` - 如果不可操作(比如权限不够),将自动隐藏 ## 行操作按钮配置`rowActions` - 返回一个对象,内含`firstAction`, `moreActions`对应的组件 - 可以返回一个空对象`{}` - `firstAction`,行操作对应的第一个按钮 - 如果不可操作,按钮灰掉 - 可以是一个组件 - 可以是`null` - 以系统信息-网络`src/pages/configuration/containers/SystemInfo/NeutronAgent/actions/index.jsx`为例 ```javascript import Enable from './Enable'; import Disable from './Disable'; const actionConfigs = { rowActions: { firstAction: null, moreActions: [ { action: Enable, }, { action: Disable, }, ], }, batchActions: [], primaryActions: [], }; export default actionConfigs; ``` - `moreActions` - `更多`按钮下对应的操作组件 - 操作的数组 - 其内的操作如果不可用,将直接隐藏该操作按钮 - 支持两种格式的配置,对应了不同的展示方案 - 每个元素是个含有`action`属性的对象 ![云硬盘操作](/docs/zh/develop/images/form/volume-action.png) - 每个元素是个含有`title`、`actions`属性的对象 ![云主机操作](/docs/zh/develop/images/form/instance-action.png) - 以云主机`src/pages/compute/containers/Instance/actions/index.jsx`为例 ```javascript const statusActions = [ StartAction, StopAction, LockAction, UnlockAction, RebootAction, SoftRebootAction, SuspendAction, ResumeAction, PauseAction, UnpauseAction, Shelve, Unshelve, ]; const actionConfigs = { rowActions: { firstAction: Console, moreActions: [ { title: t('Instance Status'), actions: statusActions, },...}} ```