当前位置:   article > 正文

antd4 Select 支持分页加载及搜索_antd select分页

antd select分页

要结合使用select的 onPopupScroll和onSearch 事件,api详情可以参考 选择器 Select - Ant Design

1. 要支持分页,就是在下拉列表滚动到底的时候发起下一次请求,把请求数据push到现有的下拉框里面

2. 搜索功能的话也要接口提供数据,前端获取不到所有的数据

代码如下:

  1. const [options, changeOptions] = useState([])
  2. const [searchData, changeSearchData] = useState({
  3. pagination: {
  4. current: 1,
  5. pageSize: 10,
  6. total: 0
  7. },
  8. searchValue: ''
  9. })
  10. const { pagination: { current, pageSize, total }, searchValue } = searchData
  11. useEffect(() => {
  12. // 页码,及搜索值变化时,发请求
  13. const data = {
  14. current,
  15. pageSize,
  16. searchValue
  17. }
  18. request('/api/getList', data).then(res => {
  19. const { pagination, options } = res
  20. changeOptions(options)
  21. changeSearchData({ ...searchData, pagination })
  22. })
  23. }, [current, searchValue])
  24. const scrollEnd = (e) => {
  25. e.persist();
  26. const { target } = e;
  27. // 滚动 触底 看接口是否还有剩余的值没传过来
  28. if (target.scrollTop + target.offsetHeight === target.scrollHeight) {
  29. if (current * pageSize < total) {
  30. changeSearchData({
  31. ...searchData,
  32. pagination: {
  33. ...searchData.pagination,
  34. current: current + 1
  35. },
  36. })
  37. }
  38. }
  39. }
  40. // 搜索条件变化时,current变成1,
  41. const searchDataset = (value) => {
  42. changeSearchData({
  43. pagination: {
  44. ...searchData.pagination,
  45. current: 1
  46. },
  47. searchValue: value
  48. })
  49. }
  50. return (
  51. <Select
  52. showSearch={true}
  53. options={options}
  54. // options的值 搜索需要filterOption return true 保证过滤的数据是从接口取过来的
  55. filterOption={() => { return true }}
  56. onPopupScroll={scrollEnd}
  57. onSearch={debounce(searchDataset, 500)} // 防止频繁触发请求
  58. >
  59. </Select>
  60. )

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/151657
推荐阅读
相关标签
  

闽ICP备14008679号