汪某人 發表於 2021-10-20 15:41:00

React-Antd Pro增删改查

<div>基础功能无非是增删改查,用于熟悉路由,组件,传值等Antd Pro的常用功能</div>
<div>上文介绍了Antd Pro的基础搭建,再此基础上进行实践</div>
<div><strong>Antd Pro默认版本V5</strong></div>
<div>&nbsp;</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>&nbsp;</p>
<p>&nbsp;</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>&nbsp;</div>
<div>这种结构的细分对后期项目维护非常友好,缺点是前期开发速度受影响</div>
<div>&nbsp;</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>&nbsp;</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进行替换,后端代码在下文附件中下载&nbsp;</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&lt;<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>   }&gt;(<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&lt;TableListItem&gt;(<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&lt;TableListItem&gt;(<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&lt;Record&lt;<span style="color: rgba(0, 0, 255, 1)">string</span>,<span style="color: rgba(0, 0, 255, 1)">string</span>[]&gt;&gt;(<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>&nbsp;</p>
<p>&nbsp;代码如下:</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[]) =&gt;<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) =&gt;<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) =&gt;<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 = () =&gt;<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&lt;boolean&gt;(<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&lt;Partial&lt;TableListItem&gt; | undefined&gt;<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&lt;boolean&gt;(<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) =&gt;
<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) =&gt;
<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&lt;TableListItem[]&gt;<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&lt;TableListItem&gt;[] =<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) =&gt;<span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span>         &lt;<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) =&gt;<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>         &gt;
<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>         &lt;/a&gt;
<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>   &lt;PageContainer&gt;
<span style="color: rgba(0, 128, 128, 1)"> 94</span>       &lt;ProTable&lt;TableListItem, TableListPagination&gt;
<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={( ) =&gt;<span style="color: rgba(0, 0, 0, 1)"> [
</span><span style="color: rgba(0, 128, 128, 1)">101</span>         &lt;<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={() =&gt;<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>         &gt;
<span style="color: rgba(0, 128, 128, 1)">108</span>             &lt;PlusOutlined /&gt;
<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>         &lt;/Button&gt;
<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) =&gt;<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>       /&gt;
<span style="color: rgba(0, 128, 128, 1)">121</span>       {selectedRowsState?.length &gt; <span style="color: rgba(128, 0, 128, 1)">0</span> &amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> (
</span><span style="color: rgba(0, 128, 128, 1)">122</span>         &lt;<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>             &lt;div&gt;
<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>               &lt;<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>               &gt;
<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>               &lt;/a&gt;{<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>               项 &amp;nbsp;&amp;<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>             &lt;/div&gt;
<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>         &gt;
<span style="color: rgba(0, 128, 128, 1)">138</span>         &lt;<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> () =&gt;<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>         &gt;
<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>         &lt;/Button&gt;
<span style="color: rgba(0, 128, 128, 1)">148</span>         
<span style="color: rgba(0, 128, 128, 1)">149</span>         &lt;/FooterToolbar&gt;
<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>       &lt;<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>       /&gt;
<span style="color: rgba(0, 128, 128, 1)">158</span>       &lt;<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>       /&gt;
<span style="color: rgba(0, 128, 128, 1)">165</span>      
<span style="color: rgba(0, 128, 128, 1)">166</span>   &lt;/PageContainer&gt;
<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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</p>
<p>&nbsp;代码如下:</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&lt;TableListItem&gt;|<span style="color: rgba(0, 0, 0, 1)"> undefined;
</span><span style="color: rgba(0, 128, 128, 1)">11</span>   onSubmit: (values: TableListItem) =&gt; <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) =&gt; <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&lt;CreateFormProps&gt;=(props)=&gt;<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>         &lt;ModalForm&lt;TableListItem&gt;
<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)=&gt;<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: () =&gt; {<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>             &gt;
<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>               &lt;&gt;
<span style="color: rgba(0, 128, 128, 1)">38</span>               &lt;<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>                   /&gt;
<span style="color: rgba(0, 128, 128, 1)">43</span>                   &lt;<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>/&gt;
<span style="color: rgba(0, 128, 128, 1)">47</span>                     &lt;<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>/&gt;
<span style="color: rgba(0, 128, 128, 1)">51</span>                     &lt;/&gt;
<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>             &lt;/ModalForm&gt;
<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>&nbsp;<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&lt;TableListItem&gt;|<span style="color: rgba(0, 0, 0, 1)"> undefined;
</span><span style="color: rgba(0, 128, 128, 1)">11</span>   onSubmit: (values: TableListItem) =&gt; <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) =&gt; <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&lt;UpdateFormProps&gt;=(props)=&gt;<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>         &lt;ModalForm&lt;TableListItem&gt;
<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)=&gt;<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>             &gt;
<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>               &lt;&gt;
<span style="color: rgba(0, 128, 128, 1)">38</span>               &lt;<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>                   /&gt;
<span style="color: rgba(0, 128, 128, 1)">43</span>                   &lt;<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>/&gt;
<span style="color: rgba(0, 128, 128, 1)">47</span>                     &lt;<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>/&gt;
<span style="color: rgba(0, 128, 128, 1)">51</span>                     &lt;/&gt;
<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>             &lt;/ModalForm&gt;
<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>&nbsp;</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>&nbsp;</p>
<p>&nbsp;Dictionary&lt;string,string[]&gt;接收待删除项</p>
</div>
<div><img src="https://img2020.cnblogs.com/blog/783110/202110/783110-20211020154032166-102794976.png">
<p>&nbsp;</p>
<p>&nbsp;</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>&nbsp;</div>
<div>以上仅用于学习和总结!</div>
<div>&nbsp;</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]
查看完整版本: React-Antd Pro增删改查