Skip to content

FSelectRemote 远程下拉选择 ​

基于 Element Plus ElSelect 封装的普通远程下拉组件,支持关键词搜索、分页滚动加载、单选/多选、字段映射和统一请求配置。

基础用法 ​

通过 request 传入公共 BaseRequestConfig。组件挂载后默认一次加载全部数据;配置 pagination 后加载第一页,输入关键词会重新搜索,滚动到底部自动加载下一页。设置 immediate: false 时可通过公开方法手动加载。

loading

在 FForm 中使用 ​

ts
const schemas = [
  {
    field: 'projectId',
    label: '项目',
    component: 'FSelectRemote',
    componentProps: {
      request: { api: fetchProjects },
      fieldNames: { label: 'name', value: 'id' },
      pagination: { pageSize: 20 },
      clearable: true,
    },
  },
]

请求约定 ​

默认不分页,请求只传递非空的 keyword,接口可直接返回完整数组。pagination: true 开启滚动分页并使用默认每页 20 条;pagination: { pageSize: 10 } 可指定每页条数。分页时默认传递 pageNum、pageSize,可通过 paramsMap 修改参数名,通过 responseMap 指定列表和总数路径,并可使用 beforeRequest、afterResponse 转换请求与响应。

ts
const request: BaseRequestConfig = {
  api: fetchProjects,
  paramsMap: {
    page: 'page',
    pageSize: 'limit',
    keyword: 'name',
  },
  responseMap: {
    list: 'data.rows',
    total: 'data.total',
  },
}

API ​

属性 ​

参数说明类型默认值
modelValue选中值,支持单选或多选any | any[]—
request公共请求配置BaseRequestConfig必填
pagination分页滚动配置;true 使用默认每页条数,对象可指定每页条数,false 不分页boolean | { pageSize?: number }false
debounce搜索防抖时间,单位毫秒number300
fieldNames选项字段映射{ label?, value?, disabled? }标准字段名

继承 Element Plus ElSelect 的其他属性;remote、remoteMethod、filterable 和加载状态由组件内部控制,debounce 仅作用于远程请求,避免重复防抖。

事件 ​

事件名说明参数
data-change列表请求成功{ list, total }
request-error请求失败error

插槽 ​

插槽名说明参数
option自定义选项内容{ item }
其他 ElSelect 具名插槽原样转发与 Element Plus 一致

公开方法 ​

方法说明
fetchData(append?)请求当前页
reload()重置页码并重新加载
loadMore()加载下一页
focus()聚焦选择器
blur()取消聚焦