antd select组件懒加载,后台搜索

import React, { useState, useEffect } from 'react';
import { Select } from 'antd';
import axios from 'axios';

export default function () {
    const limit = 10;
    const [options, setOptions] = useState([]);
    const [offset, setOffset] = useState(0);
    const [total, setTotal] = useState(0);
    const [searchValue, setSerachValue] = useState(null);

    function getData() {
        axios.get('./data.json').then(function (res) {
            let data = [...options];
            data = data.concat(res.data.rows);
            setOptions(data);
            setTotal(res.data.total);
        });
    }

    useEffect(()=>{
        getData();
    },[searchValue, offset]);


    return (
        <Select
            showSearch
            allowClear
            options={options}
            onDropdownVisibleChange={(open)=>{console.log(open); if (open) getData()}}
            onPopupScroll={(e)=>{
                const { target } = e;
                if (target.scrollTop + target.offsetHeight === target.scrollHeight) {
                    if (total > offset + limit) setOffset(offset + limit);
                }
            }}
            onSearch={(newVlaue)=>{
                setSerachValue(newVlaue);
                setOffset(0);
                setOptions([]);
            }}
        />
    );
}

data.json

{
  "total": 61,
  "rows": [
    {"key": 1, "value": "选项1"},
    {"key": 2, "value": "选项2"},
    {"key": 3, "value": "选项3"},
    {"key": 4, "value": "选项4"},
    {"key": 5, "value": "选项5"},
    {"key": 6, "value": "选项6"},
    {"key": 7, "value": "选项7"},
    {"key": 8, "value": "选项8"},
    {"key": 9, "value": "选项9"},
    {"key": 10, "value": "选项10"}
  ]
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值