我试图实现一个无限滚动到我的自动完成组件,它看起来像这样
const SearchSelect: React.FC<SearchSelectProps> = (props) => {
return (
<Autocomplete
{...props}
ListboxProps={{
onScroll: (event: React.SyntheticEvent) => {
const listboxNode = event.currentTarget
if (
listboxNode.scrollTop + listboxNode.clientHeight ===
listboxNode.scrollHeight
) {
props.loadmoreresults && props.loadmoreresults()
}
},
}}
renderInput={(params) => (
<TextField
{...params}
label={props.label}
variant="filled"
/>
)}
/>
)
}
export default withStyles(styles)(SearchSelect)
我想在每次滚动到列表底部时在列表末尾添加一个加载器组件。如果这是不可能的,至少添加一个文本"loading";最后。你会怎么做?
Thanks in advance
我终于找到了如何使用renderOption
道具,如下所示:
renderOption={(option: any) => {
if (option === props.options[props.options.length - 1] && props.hasNextPage) {
return (
<div>
{option.label}
<Loader />
</div>
)
}
return option.label
}}
编辑:这将添加一个加载器到最后一个项目,它不会从最后一个选项分开,所以它可能不适合你,如果你想在列表下添加一个额外的组件。为此,您可以创建自定义Paper组件,并通过PaperComponent
prop:
function CustomPaper({ children, ...others }) {
return (
<Paper variant="outlined" {...others}>
{children}
<Loader />
</Paper>
)
}