当前位置: 首页 > news >正文

网站推广是网站建设完成之后的长期工作手机模板网站制作

网站推广是网站建设完成之后的长期工作,手机模板网站制作,手机网站设计的项目描述,品牌建设规划制定情况antd proFromSelect 懒加载模糊查询 场景 查询用户的时候数量特别大,有10w条数据,不可能直接全部查询用来展示 所以本文章将讲解如何使用懒加载模糊查询,解决数量过大的问题 后端代码就不用展示了,很简单的分页查询,主…

antd proFromSelect 懒加载+模糊查询

场景

查询用户的时候数量特别大,有10w条数据,不可能直接全部查询用来展示

所以本文章将讲解如何使用懒加载+模糊查询,解决数量过大的问题

后端代码就不用展示了,很简单的分页查询,主要是前端的逻辑

我把返回的json放到最后了,后端就返回这点东西,入参的话就在queryAllUser函数里面,就三个,一个查询的内容,一个页码一个当页数量

不多说直接上代码

1、标签

<ProFormSelectrules={[{required: true,message: `名字为必填项`,},]}placeholder="请选择"name="id"label="名字"width={`md`}fieldProps={{// 可搜索showSearch: true,// 多选下通过响应式布局让选项自动收缩maxTagCount: 'responsive',// 设置 false 时关闭虚拟滚动virtual: true,// 下拉列表滚动时的回调onPopupScroll: e => handleScroll(e),// 文本框值变化时回调onSearch: handleSearchChange,// 这里可加入自定义加载动画dropdownRender: menu => (<>{menu}{loading && (<divstyle={{width: '100%',height: '50px',display: 'flex',alignItems: 'center',justifyContent: 'center',}}><Spin /></div>)}</>)}}// 数据options={dataSource}/>

2、JS

  /** 加载动画 */const [loading, setLoading] = useState(false);/** 数据 */const [dataSource, setDataSource] = useState<any>([]);/** 查询改变的值 */const [searchChangeValue, setSearchChangeValue] = useState<string>('');/** 页码 */const [currentPage, setCurrentPage] = useState<number>(1);// 下一页const getNextPage = async () => {// 等于 -1 就是没值了 不需要再加载了if (currentPage === -1) {return;}try {// 查询const { code, msg, data } = await queryAllUser({name: searchChangeValue,currentPage,pageSize: 10,});// code 不等于 001 时 为查询失败if (code !== "001") {message.error(msg)return}// 开启加载动画setLoading(true);const newData: any = data;// 第一页的时候 不需要之前的数据(原始数据)if (currentPage === 1) {setDataSource([...newData])} else {// 不是第一页的时候 把查出来的数据放到原始数据(之前的数据)后setDataSource((prevData: any) => [...prevData, ...newData]);}// 页面 +1setCurrentPage(pre => (pre += 1));// 不等于 10个 的时候说明查完了// 就算刚好最后剩 10个 再走一遍逻辑就好了if (newData.length !== 10) {// 关闭加载动画、鼠标滚动时不加载setCurrentPage(-1);setLoading(false);}} catch (error) {console.log(error);} finally {setLoading(false);}};// 监听滚动条const handleScroll = (event: any) => {const { scrollTop, offsetHeight, scrollHeight } = event.target;if (scrollTop + offsetHeight === scrollHeight) {// 鼠标滚动时不加载if (currentPage !== -1) {getNextPage();}}};// 防抖函数(搜索时使用)const debounce = (func: { (value: any): void; apply?: any }, delay: number | undefined) => {let timerId: string | number | NodeJS.Timeout | undefined;return (...args: any) => {clearTimeout(timerId);timerId = setTimeout(() => {// eslint-disable-next-line prefer-spreadfunc.apply(null, args);}, delay);};};// 搜索const handleSearchChange = debounce((value: any) => {// 给查询条件赋值setSearchChangeValue(value)const fn = async () => {try {// 搜索的时候已经查了第一页了 懒加载从第二页开始查setCurrentPage(2)const { code, msg, data } = await queryAllUser({name: value,currentPage: 1,pageSize: 10,});if (code !== "001") {message.error(msg)return}const newData = data;// 由于查询时从第一页开始就不需要原始数据了setDataSource([...newData]);} catch (error) {console.log(error);}};fn();}, 1000);// 页面初始化加载useEffect(() => {getNextPage();}, []);

3、json示例

{"msg": "成功","data": [{"label": "666","value": "666"},{"label": "777","value": "777"}],"code": "00100000"
}
http://www.yayakq.cn/news/306894/

相关文章:

  • 如何做网站页面免费的烟台网站建设托管
  • 沧州*网站建设怎么制作页面模板
  • 光明新区网站建设世界排名前十位
  • 适合网站开发的浏览器ssh搭建wordpress
  • 网站如何调用数据库河南住房和城乡建设厅网官方网站
  • 天津工程网站建设做外贸网站如何
  • 深圳精品网站设计商城网站建设协议
  • 学习网站二次开发北京logo设计公司哪家好
  • 保利拍卖公司网站传销网站建设
  • 网站建设公司 成本结转网站营销网站优化
  • wordpress 显示文章数量做seo有什么好处
  • 如何评估一个网站seo的优异程度洛阳信息港洛阳城事
  • 重庆网上商城网站建设公司软件定制开发订单
  • 上海企业建站小程序开发文档pdf
  • 公司网站文章的排版河间市做网站
  • 网站管理系统有哪些做网站必须会php吗
  • 南昌哪里做网站比较好网站开发加维护需要多少钱
  • 做外贸网站如果是东西杂会不会不好推广企业邮箱收费标准
  • 北京网站设计公司兴田德润放心郑州网站排名公司
  • 信阳企业网站建设天津企业网站模板建站哪家好
  • 钢铁网站建设初衷建设部网站下载
  • 网站建设费用计算依据网站内容更新慢原因
  • wordpress不升级能用吗正定seo
  • 腾讯企业网站建设wordpress 移动 主题
  • 网站推广公司电话做公司网站的模板下载
  • 网站建设都需要浏览器网站建设的步骤过程
  • 网站开发属于承揽合同吗线上推广计划
  • google 网站收录广东深圳龙岗区天气
  • 手机做炫光头像图的网站wordpress开发视频网站模板下载地址
  • 学会计算机编程可以做网站吗企业培训课程分类