最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ant Design Pro 之 ProTable使用操作

 更新時(shí)間:2020年10月31日 12:05:23   作者:搬磚的傷脊椎  
這篇文章主要介紹了Ant Design Pro 之 ProTable使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

標(biāo)簽<ProTable>

Pro-Table 是阿里Ant Design Pro V4版本,在Table基礎(chǔ)上再封裝的一個(gè)組件,包含完整的增刪改查邏輯,不用復(fù)雜的操作,簡(jiǎn)單幾個(gè)配置即可實(shí)現(xiàn)

官網(wǎng)Api地址

https://protable.ant.design/

示例

V4版本剛出不久,網(wǎng)上的教程還比較少,踩了不少坑,把自己學(xué)習(xí)過(guò)程分享出來(lái),希望可以幫到你

創(chuàng)建項(xiàng)目(需要node.js及npm環(huán)境)

npm config set registry https://registry.npm.taobao.org
npm i yarn -g
yarn config set registry https://registry.npm.taobao.org
//進(jìn)入你準(zhǔn)備創(chuàng)建項(xiàng)目的目錄
yarn create umi my-app
cd my-app
yarn
yarn start

創(chuàng)建項(xiàng)目完成后如圖

登錄后如圖

添加菜單

V4版本目錄結(jié)構(gòu)有一些改變,影響不大,按步驟創(chuàng)建就行了

完成后,在basicCustomer.tsx中寫(xiě)入helloworld,測(cè)試能否成功訪問(wèn)

import React from "react"; 
class Customer extends React.Component{
 
 render(){
  return (
    <div>helloworld</div>
  );
 }
} 
export default Customer;

成功后用下面代碼替換

import { DownOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Dropdown, Menu} from 'antd';
import React, { useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable, { ProColumns, ActionType } from '@ant-design/pro-table';
import { selectPage } from './service'; 
 
const TableList: React.FC<{}> = () => {
 const actionRef = useRef<ActionType>();
 const columns: ProColumns[] = [
  {
   title: '客戶(hù)名稱(chēng)',  //表頭顯示的名稱(chēng)
   dataIndex: 'name', // 列數(shù)據(jù)在數(shù)據(jù)項(xiàng)中對(duì)應(yīng)的路徑,支持通過(guò)數(shù)組查詢(xún)嵌套路徑
   width: '20%',
  },
  {
   title: '經(jīng)營(yíng)性質(zhì)',
   dataIndex: 'nature',
   filters: [   // 表頭的篩選菜單項(xiàng)
    { text: '個(gè)人', value: '個(gè)人' },
    { text: '一般納稅人', value: '一般納稅人' },
   ],
   width: '20%',
  },
  {
   title: '聯(lián)系人',
   dataIndex: 'linkMan',
   hideInSearch : 'false', // 設(shè)置搜索欄是否顯示
  },
  {
   title: '聯(lián)系電話',
   dataIndex: 'linkPhone',
   hideInSearch : 'false',
  },
  {
   title: '稅號(hào)',
   dataIndex: 'taxNumber',
  },
  {
   title: '狀態(tài)',
   dataIndex: 'status',
   valueEnum: {        //當(dāng)前列值的枚舉
    false: { text: '禁用', status: 'Error' },    //false是后臺(tái)傳的值,text是頁(yè)面顯示的,status是antd提供的狀態(tài),具體看api
    true: { text: '啟用', status: 'Success' },
   },
  },
 ];
 
 return (
  <PageHeaderWrapper>  //布局標(biāo)簽
   <ProTable      //表格Pro組件
    headerTitle="查詢(xún)表格"  //表頭
    actionRef={actionRef}  //用于觸發(fā)刷新操作等,看api
    rowKey="id"        //表格行 key 的取值,可以是字符串或一個(gè)函數(shù)
    toolBarRender={(action, { selectedRows }) => [
     <Button icon={<PlusOutlined />} type="primary" onClick={()=>{}}>
      新建
     </Button>,
     selectedRows && selectedRows.length > 0 && (
      <Dropdown
       overlay={
        <Menu
         selectedKeys={[]}
        >
         <Menu.Item key="remove">批量刪除</Menu.Item>
        </Menu>
       }
      >
       <Button>
        批量操作 <DownOutlined />
       </Button>
      </Dropdown>
     ),
    ]}
    request={(params) => selectPage(params)}//請(qǐng)求數(shù)據(jù)的地方,例子是用mock模擬數(shù)據(jù),我是在后臺(tái)請(qǐng)求的數(shù)據(jù)
    columns={columns}  //上面定義的
    rowSelection={{}}
   />
  </PageHeaderWrapper>
 );
}; 
export default TableList;

下面是請(qǐng)求數(shù)據(jù)的service

import Qs from "qs";
import request from "umi-request";
 
const getRandomuserParams = (params:any) => {
 return {
  pageSize: params.pageSize,
  pageIndex: params.current,
  ...params
 };
}; 
 
export async function selectPage(params:any) {
 console.log(getRandomuserParams(params))
 const res = request('/server/api/basic/basicCustomer/selectPageListCopy', {
  method: 'POST',
  headers:{
   'Content-Type':'application/x-www-form-urlencoded',
   appId: '1117664844619845632',
   token: 'eyJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE1ODYzNDQ2MjcsImlkIjoiNzkxNzA2Y2Q2M2RiM2EwMSIsImV4cCI6MTU4ODkzNjYyNywiaWF0IjoxNTg2MzQ0NjI3fQ.Gtmm-TZHlMFiEV34ncrLryjzNsv07DwnCYsChQcYEWg'
  },
  data: Qs.stringify(getRandomuserParams(params)),
 });
 
 return res;
}

前后端分離會(huì)有跨域問(wèn)題出現(xiàn),這里在proxy里配置代理解決

'/server/api/'表示以此開(kāi)頭的請(qǐng)求都攔截,pathRewrite表示發(fā)送請(qǐng)求時(shí),所省略的

配置完成后訪問(wèn),

可以看到已經(jīng)成功了,包括分頁(yè),以及表頭篩選,條件查詢(xún)都是可以用的,新增刪除還沒(méi)有寫(xiě),等后面再補(bǔ)充吧!

補(bǔ)充知識(shí):ant-design-pro的ProTable中column中設(shè)置valueEnum屬性

如果是給定得默認(rèn)值,使用如下:

 {
   title: '是否過(guò)期',
   dataIndex: 'overdue',
   key: 'overdue',
   valueEnum: {
   0: {text: '未過(guò)期',},
   1: {text: '已過(guò)期',},
   },
 }

或者先定義

 const enumList = {
 0: { text: '未過(guò)期' },
 1: { text: '已過(guò)期' },
 };
------------------------然后使用----------------------------
  {
      title: '是否過(guò)期',
      dataIndex: 'overdue',
      key: 'overdue',
      valueEnum: enumList
    }

但是如果valueEnum的值是通過(guò)接口獲取的,比如說(shuō),你想用數(shù)據(jù)庫(kù)里的用戶(hù)id作為key,userName作為text:值,因?yàn)閿?shù)據(jù)是會(huì)動(dòng)態(tài)變化的,無(wú)法用枚舉直接自定義,下面給出一種解決方法:

const [datas, setDatas] = useState({})
  useEffect(() => {
  //調(diào)用接口
   listOverdue().then((res) => {
   //如果響應(yīng)成功
    if(res.bizCode===200){
     let data = {};
     //將拿到的返回值遍歷
     res.data.map(item=>{
  //使用接口返回值的id做為 代替原本的0,1
      data[item.id]={
  //使用接口返回值中的overdueValue屬性作為原本的text:后面的值
       text: item.overdueValue,
      }
     })
     setDatas(data) 
    }     
  })
 }, []);
 ----------------然后使用-----------------------------
 {
   title: '是否過(guò)期',
   dataIndex: 'overdue',
   key: 'overdue',
   valueEnum: datas
   }

這樣就可以使用了啊~

以上這篇Ant Design Pro 之 ProTable使用操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue使用過(guò)濾器格式化日期

    vue使用過(guò)濾器格式化日期

    這篇文章主要為大家詳細(xì)介紹了vue使用過(guò)濾器格式化日期,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • Vuex的初探與實(shí)戰(zhàn)小結(jié)

    Vuex的初探與實(shí)戰(zhàn)小結(jié)

    這篇文章主要介紹了Vuex的初探與實(shí)戰(zhàn)小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 使用Vue如何寫(xiě)一個(gè)雙向數(shù)據(jù)綁定(面試常見(jiàn))

    使用Vue如何寫(xiě)一個(gè)雙向數(shù)據(jù)綁定(面試常見(jiàn))

    這篇文章主要介紹了使用Vue如何寫(xiě)一個(gè)雙向數(shù)據(jù)綁定,在前端面試過(guò)程中經(jīng)常會(huì)問(wèn)到,文中主要實(shí)現(xiàn)v-model,v-bind 和v-click三個(gè)命令,其他命令也可以自行補(bǔ)充。需要的朋友可以參考下
    2018-04-04
  • 使用vue引入maptalks地圖及聚合效果的實(shí)現(xiàn)

    使用vue引入maptalks地圖及聚合效果的實(shí)現(xiàn)

    這篇文章主要介紹了使用vue引入maptalks地圖及聚合效果的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • vue3中通過(guò)ref獲取元素節(jié)點(diǎn)的實(shí)現(xiàn)

    vue3中通過(guò)ref獲取元素節(jié)點(diǎn)的實(shí)現(xiàn)

    這篇文章主要介紹了vue3中通過(guò)ref獲取元素節(jié)點(diǎn)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 手把手教你vue-cli單頁(yè)到多頁(yè)應(yīng)用的方法

    手把手教你vue-cli單頁(yè)到多頁(yè)應(yīng)用的方法

    本篇文章主要介紹了手把手教你vue-cli單頁(yè)到多頁(yè)應(yīng)用的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Vue自定義v-has指令實(shí)現(xiàn)按鈕權(quán)限判斷

    Vue自定義v-has指令實(shí)現(xiàn)按鈕權(quán)限判斷

    這篇文章主要給大家介紹了關(guān)于Vue自定義v-has指令實(shí)現(xiàn)按鈕權(quán)限判斷的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • vue獲取input輸入值的問(wèn)題解決辦法

    vue獲取input輸入值的問(wèn)題解決辦法

    這篇文章主要介紹了vue獲取input輸入值的問(wèn)題解決辦法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家掌握這樣的問(wèn)題,需要的朋友可以參考下
    2017-10-10
  • vue項(xiàng)目適配大屏端的方法示例

    vue項(xiàng)目適配大屏端的方法示例

    眾所周知在vue移動(dòng)端h5頁(yè)面當(dāng)中,適配是經(jīng)常會(huì)遇到的問(wèn)題,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目適配大屏端的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Vue中的計(jì)算屬性與監(jiān)聽(tīng)屬性

    Vue中的計(jì)算屬性與監(jiān)聽(tīng)屬性

    這篇文章介紹了Vue中的計(jì)算屬性與監(jiān)聽(tīng)屬性,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03

最新評(píng)論

阿图什市| 岳西县| 靖宇县| 大英县| 天津市| 顺平县| 乐亭县| 图木舒克市| 桐庐县| 亳州市| 旌德县| 军事| 阿尔山市| 广饶县| 上林县| 海盐县| 专栏| 江北区| 长沙县| 佳木斯市| 喀喇沁旗| 兰州市| 乐昌市| 汤原县| 板桥市| 普格县| 大安市| 胶南市| 巴林右旗| 湖北省| 米泉市| 兴隆县| 沐川县| 三都| 平南县| 镇坪县| 乡宁县| 新乡县| 阿巴嘎旗| 喀喇沁旗| 苏州市|