国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

select下拉框---無限滾動加載

這篇具有很好參考價值的文章主要介紹了select下拉框---無限滾動加載。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

需求: select的下拉框,后端做了分頁,此時前段需要同步加分頁
解決思路: 考慮到交互和性能,采用觸底請求下一頁(無限滾動加載)

代碼示例:

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

const App: React.FC = () => {
  const [selectArr, setSelectArr] = useState([]); //下拉框數(shù)組
  const [loading, setLoading] = useState(false); //加載loading
  const [hasMore, setHasMore] = useState(true); //是否還有更多數(shù)據(jù)需要加載
  const PAGE_SIZE = 10; //每頁數(shù)量
  const [page, setPage] = useState(1); //當前頁,默認第一頁開始

  //數(shù)據(jù)處理/下一頁/是否繼續(xù)請求
  const getSelectArr = () => {
    if (loading || !hasMore) {
      return;
    }
    setLoading(true);
    try {
      const {success,data,errorMsg}=await getSelectArrApi() //api請求
      const errorMsg = null;
      if (success) {
        setSelectArr((prevData) => [...prevData, ...data]); // 更新數(shù)據(jù)(eg:第二頁和第一頁合并數(shù)組,第三頁和前兩頁合并...)
        setPage(page + 1); //更新為下一個(eg:第一頁變成請求第二頁,再第三頁..,以此類推...)
        setHasMore(data.length === PAGE_SIZE); //對比,當返回的新數(shù)組長度小于pagesize,則說明,數(shù)據(jù)已經(jīng)全部拿到; 反之說明,還有下一頁
      } else {
        message.error(errorMsg);
      }
      setLoading(false);
    } catch (err) {
      console.error(err);
    }
  };

  //滾動時操作函數(shù)
  const handleScroll = (event) => {
    //scrollTop:獲取或設(shè)置一個元素的內(nèi)容垂直滾動的像素數(shù)。
    //scrollHeight:一個元素內(nèi)容高度的度量,包括由于溢出導致的視圖中不可見內(nèi)容。
    //clientHeight:元素內(nèi)部的高度(單位像素),包含內(nèi)邊距,但不包括水平滾動條、邊框和外邊距。
    const { scrollTop, scrollHeight, clientHeight } = event.target;
    if (scrollHeight - (scrollTop + clientHeight) < 100) {
      //滾動加載
      getSelectArr();
    }
  };

  useEffect(() => {
    getSelectArr();
  });

  return (
    <Select
      showSearch
      placeholder="選擇查詢的名稱"
      optionFilterProp="children"
      onChange={(value: string) => console.log(`selected ${value}`)}
      onSearch={(value: string) => console.log('search:', value)}
      filterOption={(input, option) =>
        (option?.label ?? '').toLowerCase().includes(input.toLowerCase())
      }
      options={
        Array.isArray(selectArr) &&
        selectArr?.map((item) => {
          return {
            key: item.id,
            label: item.name,
            value: item.id,
          };
        })
      }
      virtual={true}
      onPopupScroll={(e) => handleScroll(e)}
    />
  );
};

export default App;

代碼示例講解

select下拉框---無限滾動加載,項目實用小方法,前端,react.js,無限滾動加載,typescript文章來源地址http://www.zghlxwxcb.cn/news/detail-519504.html

到了這里,關(guān)于select下拉框---無限滾動加載的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Flutter筆記:滾動之-無限滾動與動態(tài)加載的實現(xiàn)

    Flutter筆記:滾動之-無限滾動與動態(tài)加載的實現(xiàn)

    Flutter筆記 無限滾動與動態(tài)加載的實現(xiàn) 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 郵箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/133342307 本文還有另外一個版本,基于GetX簡單狀態(tài)管理狀態(tài)。地址為:https://jclee95.blog.csdn.net/article/details/13336

    2024年02月07日
    瀏覽(32)
  • 博客無限滾動加載(html、css、js)實現(xiàn)

    博客無限滾動加載(html、css、js)實現(xiàn)

    這是一個簡單實現(xiàn)了類似博客瀑布流加載功能的頁面,使用html、css、js實現(xiàn)。簡單易懂,值得學習借鑒。?? 演示地址:https://i_dog.gitee.io/easy-web-projects/infinite_scroll_blog/index.html index.html style.css script.js 該項目從github中的vanillawebprojects倉庫收集。 原始代碼: 原始代碼地址 https

    2024年02月07日
    瀏覽(20)
  • Element-Plus select選擇器-下拉組件錯位bug(有高度滾動時)

    Element-Plus select選擇器-下拉組件錯位bug(有高度滾動時)

    由于項目不便展示,因此在官網(wǎng)復現(xiàn)bug https://element-plus.org/zh-CN/component/select.html#基礎(chǔ)用法 源碼調(diào)試時發(fā)現(xiàn)下拉菜單是直接放在body 元素里,這時候希望它不要直接放在body里, 查閱文檔看到這兩個屬性: 但是添加了上面的屬性后,出現(xiàn)了新的問題,要么是不生效,要么是下拉

    2024年02月12日
    瀏覽(30)
  • vue3+elementUI-plus實現(xiàn)select下拉框的虛擬滾動

    網(wǎng)上查了幾個方案,要不就是不兼容,要不就是不支持vue3, 最終找到一個合適的,并且已上線使用,需要修改一下樣式: 代碼如下: main.js里引用 vue文件: js代碼: css代碼:

    2024年02月13日
    瀏覽(29)
  • 前端多張圖片無縫無限循環(huán)滾動

    想必大家都注意到marquee的不循環(huán)滾動。下面說一下循環(huán)滾動相對簡單的實現(xiàn)思路:一個設(shè)定寬度并且隱藏超出它寬度的內(nèi)容的容器demo,里面放demo1和demo2,demo1是滾動內(nèi)容,demo2為demo1的直接克隆,通過不斷改變demo1的scrollTop或者scrollLeft達到滾動的目的,當滾動至demo1與demo2的交

    2024年01月15日
    瀏覽(28)
  • elementUi select下拉框觸底加載異步分頁數(shù)據(jù)

    elementUi select下拉框觸底加載異步分頁數(shù)據(jù)

    在Element UI中,可以通過監(jiān)聽select下拉框的 visible-change 事件來實現(xiàn)觸底加載下一頁的效果。 方式一:利用elementUi的事件 具體步驟如下: 首先,在select組件中設(shè)置: @visible-change=\\\"handleVisibleChange\\\" ref=\\\"mySelect\\\" 在data中定義一個變量pageNum,用于記錄當前加載的頁碼: pageNum: 1, 在m

    2024年02月14日
    瀏覽(27)
  • a-tree-select 基本使用,下拉框高度和寬度設(shè)置、回顯時滾動條定位解決。

    a-tree-select 基本使用,下拉框高度和寬度設(shè)置、回顯時滾動條定位解決。

    1)問題效果 2)理想效果 3)完整代碼 說明:設(shè)置 dropdownStyle( 下拉菜單樣式 ),添加如下代碼,高度可自己調(diào)整。 :dropdown-style=\\\"{ maxHeight: \\\'400px\\\', overflow: \\\'auto\\\' }\\\" 1)問題效果 2)理想效果 說明:與文本框同寬,內(nèi)容過長時出現(xiàn)橫向滾動條。 3)完整代碼 說明:設(shè)置 dropdownM

    2024年02月14日
    瀏覽(100)
  • Vue 3 + Element UI Plus 實現(xiàn) Select 下拉框的虛擬滾動效果詳解與代碼示例

    在 Vue 3 項目中,當下拉框中的選項過多時,使用虛擬滾動可以提升性能和用戶體驗。本文將介紹如何使用 Vue 3 和 Element UI Plus(el-select-plus)組件實現(xiàn) Select 下拉框的虛擬滾動效果,并提供詳細的代碼示例。 首先,確保你已經(jīng)安裝了 Element UI Plus,它是 Element UI 的擴展版本,支

    2024年02月08日
    瀏覽(37)
  • vue+element-ui 實現(xiàn)下拉框滾動加載

    vue+element-ui 實現(xiàn)下拉框滾動加載

    該功能是由 自定義滾動指令 結(jié)合下拉框 :remote-method 遠程搜索 實現(xiàn)的 開啟遠程搜索 參考官方文檔 綁定自定義指令 v-el-select-loadmore=“l(fā)oadmore”

    2024年02月14日
    瀏覽(98)
  • el-select下拉框處理分頁數(shù)據(jù),觸底加載更多

    1、聲明自定義指令: 2、使用自定義指令v-loadmore: 3、發(fā)送請求加載數(shù)據(jù) 參考:el-select滾動到底部加載更多(分頁加載數(shù)據(jù))_el-select 觸底加載分頁_天道酬勤_鹿的博客-CSDN博客

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包