# 定义组件对象 通过OakComponent接口可以定义一个组件对象。在前几章,我们已经看到部分重要的定义配置项,完整的配置项及格式可以参见```oak-frontend-base/src/types/Page.ts```文件。在编写代码时,typescript也会给出有效的提示。在本章节我们将归纳并进一步介绍部分配置项,以及组件本身可引用的数据项和方法。 ## 配置项 配置项 | 类型 | 作用 ------------|-----------------------|--------- entity | string \| () => string | 组件关联的*Entity* isList | boolean | 组件是否为列表页 projection | object \| () => object| 组件所取的*Entity*属性 filters | array | 组件取*Entity*的过滤条件(仅对list组件有效) sorters | array | 组件取*Entity*的排序(仅对list组件有效) pagination | object | 组件取*Entity*的分页设置(仅对list组件有效) getTotal | number \| object | 组件取*Entity*时,取满足条件的行总数设置(仅对list组件有效) properties | object | 组件接受的props data | object | 组件自身的data(React中的state) features | array | 组件需要监听哪些features的变化 actions | array | 组件需要检查哪些actions的许可 singleton | boolean | 组件是否单实例 formData | function | 组件处理取到的*Entity*数据 methods | Record | 组件自身定义的方法 关于projection/filters/sorters的格式,请了解*Entity*相关章节(todo),在这里不再展开讨论。一些通过typescript定义很容易理解其语义的配置也不再展开解释。