React-Admin AutocompleteInput仅显示前1000个选项解决方法
问题定性
这个表现是react-admin框架的预期性能保护设计,不属于bug。
框架默认对AutocompleteInput、SelectInput这类选项型输入组件设置1000条的渲染截断阈值,目的是避免一次性渲染过量DOM节点导致页面卡顿、交互延迟,传入静态选项数组时默认会直接截取前1000条渲染。
复现场景
开发relatedPages功能时,传入超过1000条数据的静态选项数组的写法如下:
<ArrayInput source="pages"> <SimpleFormIterator> <AutocompleteInput source="id" choices={relatedPages} /> </SimpleFormIterator> </ArrayInput>
预期效果为可选择静态数组内的任意条目,实际仅能选择前1000个条目,相同问题在SelectInput组件上同样存在。
调整默认上限的方法
直接给对应输入组件传入choicesOptions配置项,自定义截断阈值即可,不需要修改框架源码:
- 若需要将上限调整为指定数值,比如5000条,在配置中给
getLimit返回对应数值即可 - 若需要完全放开数量限制(非必要不推荐,选项总量过大会大幅提升页面渲染开销,导致交互卡顿),可将
getLimit返回值设为Number.MAX_SAFE_INTEGER SelectInput组件的调整逻辑和上述写法完全一致,传入相同的choicesOptions配置即可生效
调整后的代码示例:
<ArrayInput source="pages"> <SimpleFormIterator> <AutocompleteInput source="id" choices={relatedPages} choicesOptions={{ getLimit: () => 5000 // 全量放开可替换为 Number.MAX_SAFE_INTEGER }} /> </SimpleFormIterator> </ArrayInput>
提示:如果可用选项总量超过2000条,更推荐使用异步远程搜索的模式按需加载匹配的选项,不要全量传入静态选项数组,能大幅降低前端渲染压力。
编号7880的相关问题记录中,官方团队也确认了该默认配置的设计逻辑,上述调整方案为官方推荐方案。
内容的提问来源于stack exchange,提问作者J.Br
相关产品推荐
相关产品推荐

