React-Antd Pro增删改查
<div>基础功能无非是增删改查,用于熟悉路由,组件,传值等Antd Pro的常用功能</div><div>上文介绍了Antd Pro的基础搭建,再此基础上进行实践</div>
<div><strong>Antd Pro默认版本V5</strong></div>
<div> </div>
<div><strong><span style="font-size: 18px">一.菜单</span></strong></div>
<div>首先配置左侧菜单列表,文件夹config》config.ts中找到routes:</div>
<div>添加如下内容:</div>
<div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
path:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">/myapp</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
name:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">我的应用</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
icon:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">AppstoreFilled</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
routes:[
{
name:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">应用列表</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
path:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./user/manage</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
component:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./user/manage</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}
],
}</span></pre>
</div>
<p>结果下图所示:</p>
</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020152759995-308206672.png">
<p> </p>
<p> </p>
</div>
<div><strong><span style="font-size: 18px">二.模块</span></strong></div>
<div>找到文件夹<em>pages</em>,创建文件夹<em>user</em>,再创建文件夹<em>manage</em>。</div>
<div>然后配置页面,请求,数据模型等。</div>
<div>最后结构如下图所示:</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020152855023-1268528795.png"></div>
<div><em>components</em>:用于放置页面常用的组件</div>
<div><em>data.d.ts</em>:用到的数据模型</div>
<div><em>index.tsx</em>:模块的主页面</div>
<div><em>service.ts</em>:封装了用到的Api请求函数</div>
<div> </div>
<div>这种结构的细分对后期项目维护非常友好,缺点是前期开发速度受影响</div>
<div> </div>
<div><span style="font-size: 16px"><em>(1)准备工作</em></span></div>
<div><span style="font-size: 16px">1.1 封装数据模型data.d.ts</span></div>
<div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> export type TableListItem =<span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> id: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> rolename: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> account: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> username: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">};
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> export type TableListPagination =<span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"> total: number;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)"> pageSize: number;
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"> current: number;
</span><span style="color: rgba(0, 128, 128, 1)">11</span> };</pre>
</div>
<p> </p>
</div>
<div id="8337-1634712647188" data-theme="default" data-language="javascript"><span style="font-size: 16px">1.2 封装用到的API请求</span></div>
<div>在Antd Pro中是通过Mock实现,本篇用.net core Api进行替换,后端代码在下文附件中下载 </div>
<div id="1683-1634712799505" data-theme="default" data-language="javascript">
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> @ts-ignore</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)"> eslint-disable </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> import { request } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">umi</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> import { TableListItem } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./data</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 获取列表</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> export <span style="color: rgba(0, 0, 255, 1)">async</span><span style="color: rgba(0, 0, 0, 1)"> function rule(
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 255, 1)">params</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> query</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 当前的页码 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> current?<span style="color: rgba(0, 0, 0, 1)">: number;
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 页面的容量 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> pageSize?<span style="color: rgba(0, 0, 0, 1)">: number;
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">},
</span><span style="color: rgba(0, 128, 128, 1)">15</span> options?: { : any },
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 255, 1)">return</span> request<<span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)"> data: TableListItem[];
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 列表的内容总数 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">20</span> total?<span style="color: rgba(0, 0, 0, 1)">: number;
</span><span style="color: rgba(0, 128, 128, 1)">21</span> success?<span style="color: rgba(0, 0, 0, 1)">: boolean;
</span><span style="color: rgba(0, 128, 128, 1)">22</span> }>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">http://localhost:4089/User</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">23</span> method: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">GET</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 255, 1)">params</span><span style="color: rgba(0, 0, 0, 1)">: {
</span><span style="color: rgba(0, 128, 128, 1)">25</span> ...<span style="color: rgba(0, 0, 255, 1)">params</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">27</span> ...(options ||<span style="color: rgba(0, 0, 0, 1)"> {}),
</span><span style="color: rgba(0, 128, 128, 1)">28</span> <span style="color: rgba(0, 0, 0, 1)">});
</span><span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">30</span>
<span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 更新 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">32</span> export <span style="color: rgba(0, 0, 255, 1)">async</span> function updateRule(data: { : any }, options?: { : any }) {
</span><span style="color: rgba(0, 128, 128, 1)">33</span> <span style="color: rgba(0, 0, 255, 1)">return</span> request<TableListItem>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">http://localhost:4089/User/Update</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)"> data,
</span><span style="color: rgba(0, 128, 128, 1)">35</span> method: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">PUT</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">36</span> ...(options ||<span style="color: rgba(0, 0, 0, 1)"> {}),
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)">});
</span><span style="color: rgba(0, 128, 128, 1)">38</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">39</span>
<span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 新建</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">41</span> export <span style="color: rgba(0, 0, 255, 1)">async</span> function addRule(data: { : any }, options?: { : any }) {
</span><span style="color: rgba(0, 128, 128, 1)">42</span> <span style="color: rgba(0, 0, 255, 1)">return</span> request<TableListItem>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">http://localhost:4089/User/Add</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">43</span> <span style="color: rgba(0, 0, 0, 1)"> data,
</span><span style="color: rgba(0, 128, 128, 1)">44</span> method: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">POST</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">45</span> ...(options ||<span style="color: rgba(0, 0, 0, 1)"> {}),
</span><span style="color: rgba(0, 128, 128, 1)">46</span> <span style="color: rgba(0, 0, 0, 1)">});
</span><span style="color: rgba(0, 128, 128, 1)">47</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">48</span>
<span style="color: rgba(0, 128, 128, 1)">49</span> <span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">* 删除</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 128, 1)">50</span> export <span style="color: rgba(0, 0, 255, 1)">async</span> function removeRule(data: {key: <span style="color: rgba(0, 0, 255, 1)">string</span>[]}, options?: { key: <span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">[] }) {
</span><span style="color: rgba(0, 128, 128, 1)">51</span> <span style="color: rgba(0, 0, 255, 1)">return</span> request<Record<<span style="color: rgba(0, 0, 255, 1)">string</span>,<span style="color: rgba(0, 0, 255, 1)">string</span>[]>>(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">http://localhost:4089/User</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, {
</span><span style="color: rgba(0, 128, 128, 1)">52</span> <span style="color: rgba(0, 0, 0, 1)"> data,
</span><span style="color: rgba(0, 128, 128, 1)">53</span> method: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">DELETE</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">54</span> ...(options ||<span style="color: rgba(0, 0, 0, 1)"> {}),
</span><span style="color: rgba(0, 128, 128, 1)">55</span> <span style="color: rgba(0, 0, 0, 1)">});
</span><span style="color: rgba(0, 128, 128, 1)">56</span> }</pre>
</div>
<p><span style="font-size: 16px"><em>(2)列表 index.tsx</em></span></p>
</div>
<div>实现效果如下:</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153101431-584907367.png">
<p> </p>
<p> 代码如下:</p>
</div>
<div id="2696-1634712250928" data-theme="default" data-language="javascript">
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_9214d6e9-d661-4936-bf31-3d2156b4e378" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_9214d6e9-d661-4936-bf31-3d2156b4e378" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> import { PlusOutlined } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@ant-design/icons</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">2</span> import { Button, message} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">antd</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">3</span> import React, { useState } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">4</span> import { PageContainer, FooterToolbar } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@ant-design/pro-layout</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">5</span> import type { ProColumns } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@ant-design/pro-table</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">6</span> import ProTable <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@ant-design/pro-table</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">7</span> import { rule, addRule,updateRule,removeRule } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./service</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">8</span> import type { TableListItem, TableListPagination } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./data</span><span style="color: rgba(128, 0, 0, 1)">'</span>;importCreateForm <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./components/CreateForm</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">9</span> importUpdateForm <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./components/UpdateForm</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 10</span>
<span style="color: rgba(0, 128, 128, 1)"> 11</span>
<span style="color: rgba(0, 128, 128, 1)"> 12</span> <span style="color: rgba(0, 0, 255, 1)">const</span> handleRemove = <span style="color: rgba(0, 0, 255, 1)">async</span> (selectedRows: TableListItem[]) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 13</span> <span style="color: rgba(0, 0, 255, 1)">const</span> hide = message.loading(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">正在删除</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 14</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (!selectedRows) <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span> <span style="color: rgba(0, 0, 0, 1)">console.log( selectedRows);
</span><span style="color: rgba(0, 128, 128, 1)"> 16</span> console.log( selectedRows.map((row) =><span style="color: rgba(0, 0, 0, 1)"> row.id));
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span> <span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 18</span> <span style="color: rgba(0, 0, 255, 1)">await</span><span style="color: rgba(0, 0, 0, 1)"> removeRule({
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span> key: selectedRows.map((row) =><span style="color: rgba(0, 0, 0, 1)"> row.id),
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span> <span style="color: rgba(0, 0, 0, 1)"> });
</span><span style="color: rgba(0, 128, 128, 1)"> 21</span> <span style="color: rgba(0, 0, 0, 1)"> hide();
</span><span style="color: rgba(0, 128, 128, 1)"> 22</span> message.success(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">删除成功,即将刷新</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 23</span> <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 24</span> } <span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (error) {
</span><span style="color: rgba(0, 128, 128, 1)"> 25</span> <span style="color: rgba(0, 0, 0, 1)"> hide();
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span> message.error(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">删除失败,请重试</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span> <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 28</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span> <span style="color: rgba(0, 0, 0, 1)">};
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span>
<span style="color: rgba(0, 128, 128, 1)"> 31</span> <span style="color: rgba(0, 0, 255, 1)">const</span> TableList: React.FC = () =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 32</span> <span style="color: rgba(0, 0, 255, 1)">const</span> = useState<boolean>(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span> <span style="color: rgba(0, 0, 255, 1)">const</span> = useState<Partial<TableListItem> | undefined><span style="color: rgba(0, 0, 0, 1)">(undefined);
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span> <span style="color: rgba(0, 0, 255, 1)">const</span> = useState<boolean>(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span> <span style="color: rgba(0, 0, 255, 1)">const</span> handleSubmit = (values: TableListItem) =>
<span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(0, 0, 0, 1)"> addRule({ ...values });
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span> message.success(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">添加成功</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span> setVisible(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(0, 0, 0, 1)">};
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(0, 0, 255, 1)">const</span> handleUpdSubmit = (values: TableListItem) =>
<span style="color: rgba(0, 128, 128, 1)"> 42</span> <span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span> <span style="color: rgba(0, 0, 0, 1)"> updateRule({ ...values });
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span> message.success(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">修改成功</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span> setUpdvisible(<span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span> <span style="color: rgba(0, 0, 0, 1)">};
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span>
<span style="color: rgba(0, 128, 128, 1)"> 48</span> <span style="color: rgba(0, 0, 255, 1)">const</span> = useState<TableListItem[]><span style="color: rgba(0, 0, 0, 1)">([]);
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span>
<span style="color: rgba(0, 128, 128, 1)"> 50</span> <span style="color: rgba(0, 0, 255, 1)">const</span> columns: ProColumns<TableListItem>[] =<span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span> title: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">id</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span> dataIndex: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">id</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span> valueType: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">textarea</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> hideInForm: <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span> hideInTable: <span style="color: rgba(0, 0, 255, 1)">true</span>
<span style="color: rgba(0, 128, 128, 1)"> 57</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span> title: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">角色名称</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span> dataIndex: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">rolename</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span> valueType: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">textarea</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 63</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span> title: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">用户名</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span> dataIndex: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">username</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span> valueType: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">textarea</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span> title: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">账号</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span> dataIndex: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">account</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span> valueType: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">textarea</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span> title: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">操作</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 75</span> dataIndex: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">option</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span> valueType: <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">option</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span> render: (_, record) =><span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span> <<span style="color: rgba(0, 0, 0, 1)">a
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span> key=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Id</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)"> 80</span> onClick={(e) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(0, 0, 0, 1)"> e.preventDefault();
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span> setUpdvisible(<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 83</span> <span style="color: rgba(0, 0, 0, 1)"> setCurrent(record);
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span> >
<span style="color: rgba(0, 128, 128, 1)"> 86</span> <span style="color: rgba(0, 0, 0, 1)"> 修改
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span> </a>
<span style="color: rgba(0, 128, 128, 1)"> 88</span> <span style="color: rgba(0, 0, 0, 1)"> ],
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span> <span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span>
<span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> (
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span> <PageContainer>
<span style="color: rgba(0, 128, 128, 1)"> 94</span> <ProTable<TableListItem, TableListPagination>
<span style="color: rgba(0, 128, 128, 1)"> 95</span> headerTitle=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">查询表格</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)"> 96</span> rowKey=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">id</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)"> 97</span> search=<span style="color: rgba(0, 0, 0, 1)">{{
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span> labelWidth: <span style="color: rgba(128, 0, 128, 1)">120</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">100</span> toolBarRender={( ) =><span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 128, 128, 1)">101</span> <<span style="color: rgba(0, 0, 0, 1)">Button
</span><span style="color: rgba(0, 128, 128, 1)">102</span> type=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">primary</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">103</span> key=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">primary</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">104</span> onClick={() =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">105</span> setVisible(<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">106</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">107</span> >
<span style="color: rgba(0, 128, 128, 1)">108</span> <PlusOutlined />
<span style="color: rgba(0, 128, 128, 1)">109</span> <span style="color: rgba(0, 0, 0, 1)"> 新建
</span><span style="color: rgba(0, 128, 128, 1)">110</span> </Button>
<span style="color: rgba(0, 128, 128, 1)">111</span> <span style="color: rgba(0, 0, 0, 1)"> ]}
</span><span style="color: rgba(0, 128, 128, 1)">112</span> request=<span style="color: rgba(0, 0, 0, 1)">{rule}
</span><span style="color: rgba(0, 128, 128, 1)">113</span> columns=<span style="color: rgba(0, 0, 0, 1)">{columns}
</span><span style="color: rgba(0, 128, 128, 1)">114</span> rowSelection=<span style="color: rgba(0, 0, 0, 1)">{{
</span><span style="color: rgba(0, 128, 128, 1)">115</span> onChange: (_, selectedRows) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">116</span> console.log(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">选择开始:</span><span style="color: rgba(128, 0, 0, 1)">"</span>+<span style="color: rgba(0, 0, 0, 1)">selectedRows.length);
</span><span style="color: rgba(0, 128, 128, 1)">117</span> <span style="color: rgba(0, 0, 0, 1)"> setSelectedRows(selectedRows);
</span><span style="color: rgba(0, 128, 128, 1)">118</span> <span style="color: rgba(0, 0, 0, 1)"> },
</span><span style="color: rgba(0, 128, 128, 1)">119</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">120</span> />
<span style="color: rgba(0, 128, 128, 1)">121</span> {selectedRowsState?.length > <span style="color: rgba(128, 0, 128, 1)">0</span> &&<span style="color: rgba(0, 0, 0, 1)"> (
</span><span style="color: rgba(0, 128, 128, 1)">122</span> <<span style="color: rgba(0, 0, 0, 1)">FooterToolbar
</span><span style="color: rgba(0, 128, 128, 1)">123</span> extra=<span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)">124</span> <div>
<span style="color: rgba(0, 128, 128, 1)">125</span> 已选择{<span style="color: rgba(128, 0, 0, 1)">'</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">126</span> <<span style="color: rgba(0, 0, 0, 1)">a
</span><span style="color: rgba(0, 128, 128, 1)">127</span> style=<span style="color: rgba(0, 0, 0, 1)">{{
</span><span style="color: rgba(0, 128, 128, 1)">128</span> fontWeight: <span style="color: rgba(128, 0, 128, 1)">600</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">129</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">130</span> >
<span style="color: rgba(0, 128, 128, 1)">131</span> <span style="color: rgba(0, 0, 0, 1)"> {selectedRowsState.length}
</span><span style="color: rgba(0, 128, 128, 1)">132</span> </a>{<span style="color: rgba(128, 0, 0, 1)">'</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">133</span> 项 &nbsp;&<span style="color: rgba(0, 0, 0, 1)">nbsp;
</span><span style="color: rgba(0, 128, 128, 1)">134</span>
<span style="color: rgba(0, 128, 128, 1)">135</span> </div>
<span style="color: rgba(0, 128, 128, 1)">136</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">137</span> >
<span style="color: rgba(0, 128, 128, 1)">138</span> <<span style="color: rgba(0, 0, 0, 1)">Button
</span><span style="color: rgba(0, 128, 128, 1)">139</span> onClick={<span style="color: rgba(0, 0, 255, 1)">async</span> () =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">140</span>
<span style="color: rgba(0, 128, 128, 1)">141</span> <span style="color: rgba(0, 0, 255, 1)">await</span><span style="color: rgba(0, 0, 0, 1)"> handleRemove(selectedRowsState);
</span><span style="color: rgba(0, 128, 128, 1)">142</span> <span style="color: rgba(0, 0, 0, 1)"> setSelectedRows([]);
</span><span style="color: rgba(0, 128, 128, 1)">143</span>
<span style="color: rgba(0, 128, 128, 1)">144</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">145</span> >
<span style="color: rgba(0, 128, 128, 1)">146</span> <span style="color: rgba(0, 0, 0, 1)"> 批量删除
</span><span style="color: rgba(0, 128, 128, 1)">147</span> </Button>
<span style="color: rgba(0, 128, 128, 1)">148</span>
<span style="color: rgba(0, 128, 128, 1)">149</span> </FooterToolbar>
<span style="color: rgba(0, 128, 128, 1)">150</span> <span style="color: rgba(0, 0, 0, 1)"> )}
</span><span style="color: rgba(0, 128, 128, 1)">151</span> <<span style="color: rgba(0, 0, 0, 1)">CreateForm
</span><span style="color: rgba(0, 128, 128, 1)">152</span> done={<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">153</span> visible=<span style="color: rgba(0, 0, 0, 1)">{visible}
</span><span style="color: rgba(0, 128, 128, 1)">154</span> current=<span style="color: rgba(0, 0, 0, 1)">{current}
</span><span style="color: rgba(0, 128, 128, 1)">155</span> onSubmit=<span style="color: rgba(0, 0, 0, 1)">{handleSubmit}
</span><span style="color: rgba(0, 128, 128, 1)">156</span> onVisibleChange=<span style="color: rgba(0, 0, 0, 1)">{setVisible}
</span><span style="color: rgba(0, 128, 128, 1)">157</span> />
<span style="color: rgba(0, 128, 128, 1)">158</span> <<span style="color: rgba(0, 0, 0, 1)">UpdateForm
</span><span style="color: rgba(0, 128, 128, 1)">159</span> done={<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">160</span> updvisible=<span style="color: rgba(0, 0, 0, 1)">{updvisible}
</span><span style="color: rgba(0, 128, 128, 1)">161</span> current=<span style="color: rgba(0, 0, 0, 1)">{current}
</span><span style="color: rgba(0, 128, 128, 1)">162</span> onSubmit=<span style="color: rgba(0, 0, 0, 1)">{handleUpdSubmit}
</span><span style="color: rgba(0, 128, 128, 1)">163</span> onVisibleChange=<span style="color: rgba(0, 0, 0, 1)">{setUpdvisible}
</span><span style="color: rgba(0, 128, 128, 1)">164</span> />
<span style="color: rgba(0, 128, 128, 1)">165</span>
<span style="color: rgba(0, 128, 128, 1)">166</span> </PageContainer>
<span style="color: rgba(0, 128, 128, 1)">167</span> <span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">168</span> <span style="color: rgba(0, 0, 0, 1)">};
</span><span style="color: rgba(0, 128, 128, 1)">169</span>
<span style="color: rgba(0, 128, 128, 1)">170</span> export <span style="color: rgba(0, 0, 255, 1)">default</span> TableList;</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><em>ProTable</em>:表格组件,具体使用参考:https://procomponents.ant.design/components/table/</p>
<p><em>ProColumns</em>:表格列,注意dataIndex属性对应的大小写问题</p>
</div>
<div><em>request={rule}</em>: rule对应到data.d.ts中的列表Api</div>
<div> </div>
<div>后端模拟了一些数据用于显示:</div>
<div><img alt="" width="491" height="321" loading="lazy" src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153257198-1335673123.png"></div>
<div>其中的CreateForm和UpdateForm在下一步会介绍</div>
<div> </div>
<div><em><span style="font-size: 16px">(3)新增和修改</span></em></div>
<div>新增和修改用弹窗的形式显示,弹窗组件<em>ModalForm</em>,可以参考https://procomponents.ant.design/components/modal-form</div>
<div>在Antd Pro中弹窗的关闭和显示 通过其属性visible控制。需要注意的是,要配置参数属性<span style="color: rgba(255, 0, 0, 1)"><em>onVisibleChange</em></span>,否则可能会有弹窗无法关闭的问题</div>
<div> </div>
<div><span style="font-size: 16px">3.1 新增页面</span></div>
<div>实现效果:</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153454778-1206630756.png">
<p> </p>
<p> 代码如下:</p>
</div>
<div id="4386-1634713312597" data-theme="default" data-language="javascript">
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_7b0060b8-1d48-4fef-8eeb-e29edbbe3fdc" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_7b0060b8-1d48-4fef-8eeb-e29edbbe3fdc" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> import type {FC} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">import {
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"> ModalForm,
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)"> ProFormText
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@ant-design/pro-form</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> import type {TableListItem} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">../data.d</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> type CreateFormProps=<span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"> done: boolean;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)"> visible: boolean;
</span><span style="color: rgba(0, 128, 128, 1)">10</span> current: Partial<TableListItem>|<span style="color: rgba(0, 0, 0, 1)"> undefined;
</span><span style="color: rgba(0, 128, 128, 1)">11</span> onSubmit: (values: TableListItem) => <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">12</span> onVisibleChange?: (b: boolean) => <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">14</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 255, 1)">const</span> CreateForm: FC<CreateFormProps>=(props)=><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 255, 1)">const</span>{done,visible,current,onSubmit,onVisibleChange}=<span style="color: rgba(0, 0, 0, 1)">props;
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(!<span style="color: rgba(0, 0, 0, 1)">visible){
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> (
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <ModalForm<TableListItem>
<span style="color: rgba(0, 128, 128, 1)">22</span> visible=<span style="color: rgba(0, 0, 0, 1)">{visible}
</span><span style="color: rgba(0, 128, 128, 1)">23</span> title={<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">添加</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">24</span> width={<span style="color: rgba(128, 0, 128, 1)">640</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">25</span> onFinish={<span style="color: rgba(0, 0, 255, 1)">async</span> (values)=><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)"> onSubmit(values)
</span><span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">28</span> onVisibleChange=<span style="color: rgba(0, 0, 0, 1)">{onVisibleChange}
</span><span style="color: rgba(0, 128, 128, 1)">29</span> initialValues=<span style="color: rgba(0, 0, 0, 1)">{current}
</span><span style="color: rgba(0, 128, 128, 1)">30</span> modalProps=<span style="color: rgba(0, 0, 0, 1)">{{
</span><span style="color: rgba(0, 128, 128, 1)">31</span> onCancel: () => {<span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;},
</span><span style="color: rgba(0, 128, 128, 1)">32</span> destroyOnClose:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">33</span> bodyStyle:done?{padding:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">72px o</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}:{}
</span><span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">35</span> >
<span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <>
<span style="color: rgba(0, 128, 128, 1)">38</span> <<span style="color: rgba(0, 0, 0, 1)">ProFormText
</span><span style="color: rgba(0, 128, 128, 1)">39</span> name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">rolename</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">40</span> label=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">角色名称</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">41</span> placeholder=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">请输入</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">42</span> />
<span style="color: rgba(0, 128, 128, 1)">43</span> <<span style="color: rgba(0, 0, 0, 1)">ProFormText
</span><span style="color: rgba(0, 128, 128, 1)">44</span> name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">account</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">45</span> label=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">账号名称</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">46</span> placeholder=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">请输入</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
<span style="color: rgba(0, 128, 128, 1)">47</span> <<span style="color: rgba(0, 0, 0, 1)">ProFormText
</span><span style="color: rgba(0, 128, 128, 1)">48</span> name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">username</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">49</span> label=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">用户名称</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">50</span> placeholder=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">请输入</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
<span style="color: rgba(0, 128, 128, 1)">51</span> </>
<span style="color: rgba(0, 128, 128, 1)">52</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">53</span>
<span style="color: rgba(0, 128, 128, 1)">54</span>
<span style="color: rgba(0, 128, 128, 1)">55</span> </ModalForm>
<span style="color: rgba(0, 128, 128, 1)">56</span> <span style="color: rgba(0, 0, 0, 1)"> );
</span><span style="color: rgba(0, 128, 128, 1)">57</span> <span style="color: rgba(0, 0, 0, 1)">};
</span><span style="color: rgba(0, 128, 128, 1)">58</span> export <span style="color: rgba(0, 0, 255, 1)">default</span> CreateForm;</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>点击"确定",触发”<em>onFinish</em>“,调用父组件传来的方法<em>handleSubmit</em>提交数据,参数values拿到需要提交的能映射到data.d.ts中的TableListItem模型数据</p>
</div>
<div><img alt="" width="397" height="150" loading="lazy" src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153624075-1206522497.png">
<p> <img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153643741-1221378866.png"></p>
</div>
<div><span style="font-size: 16px">3.2 修改页面</span></div>
<div>实现效果:</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153730880-2077083382.png"></div>
<div>代码如下:</div>
<div id="8835-1634713673912" data-theme="default" data-language="javascript">
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_1e2fa2ed-8d23-4faa-81c8-928f1519a2f6" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_1e2fa2ed-8d23-4faa-81c8-928f1519a2f6" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> import type {FC} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">react</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">import {
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"> ModalForm,
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)"> ProFormText
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@ant-design/pro-form</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> import type {TableListItem} <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">../data.d</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> type UpdateFormProps=<span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"> done: boolean;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)"> updvisible: boolean;
</span><span style="color: rgba(0, 128, 128, 1)">10</span> current: Partial<TableListItem>|<span style="color: rgba(0, 0, 0, 1)"> undefined;
</span><span style="color: rgba(0, 128, 128, 1)">11</span> onSubmit: (values: TableListItem) => <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">12</span> onVisibleChange?: (b: boolean) => <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">13</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">15</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 255, 1)">const</span> UpdateForm: FC<UpdateFormProps>=(props)=><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 255, 1)">const</span>{done,updvisible,current,onSubmit,onVisibleChange}=<span style="color: rgba(0, 0, 0, 1)">props;
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 255, 1)">if</span>(!<span style="color: rgba(0, 0, 0, 1)">updvisible){
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> (
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <ModalForm<TableListItem>
<span style="color: rgba(0, 128, 128, 1)">23</span> visible=<span style="color: rgba(0, 0, 0, 1)">{updvisible}
</span><span style="color: rgba(0, 128, 128, 1)">24</span> title={<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">修改</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">25</span> width={<span style="color: rgba(128, 0, 128, 1)">640</span><span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">26</span> onFinish={<span style="color: rgba(0, 0, 255, 1)">async</span> (values)=><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)"> onSubmit(values)
</span><span style="color: rgba(0, 128, 128, 1)">28</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">29</span> onVisibleChange=<span style="color: rgba(0, 0, 0, 1)">{onVisibleChange}
</span><span style="color: rgba(0, 128, 128, 1)">30</span> initialValues=<span style="color: rgba(0, 0, 0, 1)">{current}
</span><span style="color: rgba(0, 128, 128, 1)">31</span> modalProps=<span style="color: rgba(0, 0, 0, 1)">{{
</span><span style="color: rgba(0, 128, 128, 1)">32</span> destroyOnClose:<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 128, 1)">33</span> bodyStyle:done?{padding:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">72px o</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">}:{}
</span><span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)"> }}
</span><span style="color: rgba(0, 128, 128, 1)">35</span> >
<span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <>
<span style="color: rgba(0, 128, 128, 1)">38</span> <<span style="color: rgba(0, 0, 0, 1)">ProFormText
</span><span style="color: rgba(0, 128, 128, 1)">39</span> name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">rolename</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">40</span> label=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">角色名称</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">41</span> placeholder=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">请输入</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">42</span> />
<span style="color: rgba(0, 128, 128, 1)">43</span> <<span style="color: rgba(0, 0, 0, 1)">ProFormText
</span><span style="color: rgba(0, 128, 128, 1)">44</span> name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">account</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">45</span> label=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">账号名称</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">46</span> placeholder=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">请输入</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
<span style="color: rgba(0, 128, 128, 1)">47</span> <<span style="color: rgba(0, 0, 0, 1)">ProFormText
</span><span style="color: rgba(0, 128, 128, 1)">48</span> name=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">username</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">49</span> label=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">用户名称</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">50</span> placeholder=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">请输入</span><span style="color: rgba(128, 0, 0, 1)">"</span>/>
<span style="color: rgba(0, 128, 128, 1)">51</span> </>
<span style="color: rgba(0, 128, 128, 1)">52</span> <span style="color: rgba(0, 0, 0, 1)"> }
</span><span style="color: rgba(0, 128, 128, 1)">53</span>
<span style="color: rgba(0, 128, 128, 1)">54</span>
<span style="color: rgba(0, 128, 128, 1)">55</span> </ModalForm>
<span style="color: rgba(0, 128, 128, 1)">56</span> <span style="color: rgba(0, 0, 0, 1)"> );
</span><span style="color: rgba(0, 128, 128, 1)">57</span> <span style="color: rgba(0, 0, 0, 1)">};
</span><span style="color: rgba(0, 128, 128, 1)">58</span> export <span style="color: rgba(0, 0, 255, 1)">default</span> UpdateForm;</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>修改和新增功能类似,多了数据显示的功能,选择后的数据通过<em>current</em>存储</p>
</div>
<div><img alt="" width="288" height="325" loading="lazy" src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153843188-174458736.png"></div>
<div>最后提交至updateform组件的current属性</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153906901-452838445.png">
<p> </p>
<p><span style="font-size: 16px">(4)删除</span></p>
</div>
<div>主要是针对批量删除,在表格中配置<em>rowSelection</em>,监听和记录选中的项</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020153943519-1817539129.png"></div>
<div>删除接口的传参是<em>Request Payload</em>,后端接收参数的是字典类型,后面还需优化</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020154011732-947308659.png">
<p> </p>
<p> Dictionary<string,string[]>接收待删除项</p>
</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020154032166-102794976.png">
<p> </p>
<p> </p>
</div>
<div><span style="font-size: 18px"><strong>三.总结</strong></span></div>
<div>以上简单记录了下基于Antd Pro的增删改查功能,涉及到React一些基础知识,比如创建组件,Hook的一些使用,</div>
<div>涉及到了ES6的一些常用函数map,set,async,Promise等,</div>
<div>最主要是Pro中6个基于Antd开发的模板组件,ProLayout,ProTable,ProForm,ProCard,ProDescriptions,ProSkeleton</div>
<div> </div>
<div>以上仅用于学习和总结!</div>
<div> </div>
<div>附:后端Api</div>
<div>
<p>链接:https://pan.baidu.com/s/1_ZAGB-WilXdrxiU9gdn47A <br>提取码:4m5w</p>
</div>
<p></p><br><br>
来源:https://www.cnblogs.com/ywkcode/p/15429107.html
頁:
[1]