欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

react ant protable自定義實現(xiàn)搜索下拉框

 更新時間:2023年06月07日 16:01:03   作者:Sunny_Future  
這篇文章主要介紹了react ant protable自定義實現(xiàn)搜索下拉框,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

react ant protable自定義搜索下拉框

背景

select選擇框很常見,這里實現(xiàn) react ant protable實現(xiàn)自定義搜索下拉框

coding

    const [selectEnum, setSelectEnum] = useState({});
    const asyncFetch = () => {
        fetch('https://localhost/api/search_list')
            .then((response) => response.json())
            .then((json) => setSelectEnum(json.data))
            .catch((error) => {
                console.log('fetch data failed', error)
            });
    };
    // 頁面刷新,自動發(fā)一次請求
    useEffect(() => {
        asyncFetch()
    }, []);
    // 防抖搜索設(shè)備
    const handleSearch = debounce((val)=> {
        const dispatch = async (params) => {
            console.log("params=", params)
            const data = await post("https://localhost/api/search_list", {
                body: params
            })
            if (data) {
                setSelectEnum(data)
            }
            return {
                data: Array.from(data),
                success: true,
            }
        }
        dispatch({
            search_key_worlds: val
        }).then()
    }, 1000)   
    const columns = [
        {
            title: "bookName",
            dataIndex: "bookName",
            hiddenInTable: true,
            initialValue: "Nginx大全",
            renderFormItem: () =>{
                // let list = [{"id": 0, "name": "Nginx大全"}, {"id": 1, "name": "Java從入門到精通"}]
                let list = Array.from(selectEnum);
                const options = list.map(item => <option key={item.id}>{item.name}</option>);
                return (
                    <Select
                        key="searchSelcet"
                        showSearch
                        placeholder="請輸入關(guān)鍵字搜索"
                        filterOption={false}
                        onSearch={handleSearch}
                    >   {
                        <>
                        <option key="" value="">全部</option>
                        </>
                    }
                        {options}
                    </Select>
                )
            }
        }
    ]

antd react ProTable 基本使用

antd 全稱 Ant Design, 是目前來說運(yùn)用最廣泛的 react 的 ui 框架, 下文就用略寫 antd 代替了

pro系列不做過多解釋, 畢竟ui框架大家也都得心應(yīng)手了, 好好看文檔幾乎沒毛病

個人分析

  • 優(yōu)勢:antd react確實是非常強(qiáng)大的ui框架, 其中的內(nèi)容包含了前端幾乎所有的ui, 運(yùn)用此框架幾乎可以不用寫css樣式
  • 劣勢:學(xué)習(xí)難度大, 網(wǎng)上教程相對較少, 一遇到bug, 比較難解決

安裝

1.安裝 antd

yarn add antd

2.安裝 pro-table 系列

官方網(wǎng)址: https://procomponents.ant.design/docs/getting-started

yarn add @ant-design/pro-table
// or
cnpm i @ant-design/pro-table --save
// 其他pro系列安裝
npm i @ant-design/pro-form --save
npm i @ant-design/pro-layout --save
npm i @ant-design/pro-table --save
npm i @ant-design/pro-list --save
npm i @ant-design/pro-descriptions --save
npm i @ant-design/pro-card --save
npm i @ant-design/pro-skeleton --save

這里要注意 antd 的版本問題, 最好采用4.0以上的版本分享下我現(xiàn)在使用的版本,

react版本 react@17.0.2 | MIT | deps: 2 | versions: 739 // npm info react
node版本 v16.4.2 // node -v
yarn版本 1.22.11 // yarn -version
dva版本 dva-cli version 0.10.1 // dva -v
nmi版本 ^2.9.0 // umi -v
antd版本 4.8.0
溫馨提示: 一般antd安裝之后, 普通的ui插件都能使用, 安裝pro后引用就報錯, 建議先替換antd版本, 直接在package.json中修改antd的版本, 然后刪除node_modules內(nèi)的文件, 重新 cnpm install 或者 yarn install

常用字段

1.columns 數(shù)組 表格列的配置描述 (下圖紅框內(nèi)的配置)


columns = [
	{
		title:'名稱',// (必填) 顯示名稱
		dataIndex:'name',// (必填) 根據(jù)后臺接口, 需要顯示的字段
		width:48,// (選填) 展示的寬度
		valueEnum: {// (選填) 選擇某個選項, 點擊查詢按鈕可查詢, valueEnum 可展示單選框 status可不填 
      		0: { text: '全部', status: 'Default' },
      		1: { text: '關(guān)閉', status: 'Default' },
      		2: { text: '運(yùn)行中', status: 'Processing' },
      		3: { text: '已上線', status: 'Success' },
      		4: { text: '異常', status: 'Error' },
      		all:{ text: '全選' }
    	},
    	initialValue: 1,// (選填) valueEnum的默認(rèn)值
    	render: (_) => <a>{_}</a>,// (選填) 不在搜索時使用, 可嵌套標(biāo)簽展示數(shù)據(jù), 多用于三目運(yùn)算符展示比較復(fù)雜的數(shù)據(jù)
    	filterDropdown: () => (// (選填) 添加搜索條件, 此處以搜索框為例, 在表頭和表格上方均有篩選條件
     		<div style={{ padding: 8 }}>
        		<Input style={{ width: 188, marginBottom: 8, display: 'block' }} />
     		</div>
    	),
    	filterIcon: (filtered) => (// (選填) 有搜索時, 可重新定義表頭中的搜索icon
      		<SearchOutlined style={{ color: filtered ? '#1890ff' : undefined }} />
    	),
    	filters: [{text:'全選',value:'all'}],// (選填) 對某一列數(shù)據(jù)進(jìn)行篩選,使用列的 filters 屬性來指定需要篩選菜單的列
    	onFilter: (value, record) => record.name.indexOf(value) === 0,// (選填) 用于篩選當(dāng)前數(shù)據(jù)
    	defaultSortOrder:'ascend', // (選填) 默認(rèn)排列順序 ascend | descend
    	valueType: 'money', // (選填) 值的類型,會生成不同的渲染器 (舉例為金額)
	}
]

2.request 請求接口查詢數(shù)據(jù)


getData方法內(nèi)容

getData = (params)=>{
    const { dispatch } = this.props;
    dispatch({
      type: 'login/login',
      payload: {
        params
      },
      callback: (res) => {
        console.log(res)
      },
    });
  }

3.dataSource 表格展示的數(shù)據(jù), 如下面例子

// 使用 dataSource={[]}
[{"key":0,"name":"AppName","containers":11,"creator":"付小小","status":"running","createdAt":1641364688922,"money":0,"progress":47,"memo":"簡短備注文案"},{"key":1,"name":"AppName","containers":3,"creator":"林東東","status":"close","createdAt":1641364687979,"money":1538,"progress":8,"memo":"很長很長很長很長很長很長很長的文字要展示但是要留下尾巴"},{"key":2,"name":"AppName","containers":0,"creator":"曲麗麗","status":"close","createdAt":1641364688524,"money":1258,"progress":69,"memo":"簡短備注文案"},{"key":3,"name":"AppName","containers":12,"creator":"林東東","status":"close","createdAt":1641364688493,"money":4530,"progress":14,"memo":"很長很長很長很長很長很長很長的文字要展示但是要留下尾巴"},{"key":4,"name":"AppName","containers":18,"creator":"曲麗麗","status":"close","createdAt":1641364687837,"money":3432,"progress":65,"memo":"簡短備注文案"}]

4.pagination 分頁器


  pagination={{
        pageSize:2,// 每頁條數(shù)
        showQuickJumper: true,// 是否可以快速跳轉(zhuǎn)至某頁 (就是那個輸入框)
        // pageSizeOptions:[5,10,20,30,50,100],	指定每頁可以顯示多少條
        // position: 'bottom' // 'top' 分頁器顯示位置
      }}

5.toolbar 表格的標(biāo)題

  toolbar={{
        title: '高級表格',
        tooltip: '這是一個標(biāo)題提示',
      }}

6.toolBarRender 表格表頭上方的按鈕群

      toolBarRender={() => [
        <Button key="danger" danger>
          危險按鈕
        </Button>,
        <Button key="show">查看日志</Button>,
        <Button type="primary" key="primary">
          創(chuàng)建應(yīng)用
        </Button>,
        <Dropdown key="menu" overlay={menu}>
          <Button>
            <EllipsisOutlined />
          </Button>
        </Dropdown>,
      ]}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • react?定位組件源碼解析

    react?定位組件源碼解析

    這篇文章主要為大家介紹了react定位組件源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 一文理解Redux及其工作原理

    一文理解Redux及其工作原理

    這篇文章主要介紹了一文理解R通過圍繞主題展開詳細(xì)edux及其工作原理,文章通過主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 解析TypeError:import_react_native.AppState.removeEventListener?is?not?a?function

    解析TypeError:import_react_native.AppState.removeEventListener

    這篇文章主要為大家介紹了TypeError:import_react_native.AppState.removeEventListener?is?not?a?function問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • react合成事件與原生事件的相關(guān)理解

    react合成事件與原生事件的相關(guān)理解

    本文主要介紹了react合成事件與原生事件的相關(guān)概念,幫助大家區(qū)分這兩種事件,學(xué)習(xí)react的同學(xué)不妨了解下
    2021-05-05
  • React項目配置axios和反向代理和process.env環(huán)境配置等問題

    React項目配置axios和反向代理和process.env環(huán)境配置等問題

    這篇文章主要介紹了React項目配置axios和反向代理和process.env環(huán)境配置等問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 詳解React如何優(yōu)雅地根據(jù)prop更新state值

    詳解React如何優(yōu)雅地根據(jù)prop更新state值

    這篇文章主要為大家詳細(xì)介紹了React如何優(yōu)雅地實現(xiàn)根據(jù)prop更新state值,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的小伙伴可以了解下
    2023-11-11
  • React實現(xiàn)多個場景下鼠標(biāo)跟隨提示框詳解

    React實現(xiàn)多個場景下鼠標(biāo)跟隨提示框詳解

    這篇文章主要為大家介紹了React實現(xiàn)多個場景下鼠標(biāo)跟隨提示框詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 一文帶你掌握React類式組件中setState的應(yīng)用

    一文帶你掌握React類式組件中setState的應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了介紹了React類式組件中setState的三種寫法以及簡單討論下setState?到底是同步的還是異步的,感興趣的可以了解下
    2024-02-02
  • react中axios結(jié)合后端實現(xiàn)GET和POST請求方式

    react中axios結(jié)合后端實現(xiàn)GET和POST請求方式

    這篇文章主要介紹了react中axios結(jié)合后端實現(xiàn)GET和POST請求方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 關(guān)于react useState更新異步問題

    關(guān)于react useState更新異步問題

    這篇文章主要介紹了關(guān)于react useState更新異步問題,具有很好的參考價值,希望對大家有所幫助。以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

    2022-08-08

最新評論