antdprov5

Posted 煜成'Studio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了antdprov5相关的知识,希望对你有一定的参考价值。

antdprov5

新建文件夹,alt+D 输入cmd打开终端

yarn create umi 
//一系列设置后

//安装依赖
yarn install

yarn start

//检查错误和代码格式化,快捷键是:光标在文档中任何位置,再shift+alt+l
npm run lint

新建

1.src/pages/BasicList文件夹,文件夹里面新建index.tsx和index.less,rafce快捷键创建函数式组件

import styles from './index.less';

className=styles.tableToolBar

2.config下的routes.ts里配置式路由(复制粘贴配置就行)

import  PageContainer  from '@ant-design/pro-layout'; //添加页面的头部,就是面包屑的那个位置

<PageContainer>
    ...
</PageContainer>

3.useRequest获取数据

import  useRequest, useIntl  from 'umi'; //数据获取

const init = useRequest< data: BasicListApi.ListData >(
    `https://public-api-v2.aspirantzhang.com/api/admins?X-API-KEY=antd$pageQuery$sortQuery`,
);
//BasicListApi在index.tsx的同目录下的data.d.ts中设置,之后的init?.data?.dataSource输入的时候就会有代码提示

//手动重新获取数据
init.run()

data.d.ts中是类型定义的文件,使用json2ts把后台数据转变一下,并把namespace(导出去的文件名)替换命名为BasicListApi,在useRequest后面用<data: BasicListApi.Data>定义一下

在类型定义中,module用的多于namespace(官网推荐);type用的多于interface(官网上推荐使用interface,但是type是大势所趋了,所以用type)。export interface,可以不加export,type也是

useEffect(() => 
    //监听page和per_page等的改变
    init.run(); //重新刷新一下页面
    // eslint-disable-next-line react-hooks/exhaustive-deps
, [page, perPage]);

//页码改变
const PaginationChangeHandler = (_page: any, _per_page: any) => 
    //这里的参数_page和_per_page不能用page和per_page,因为和上面全局的page和per_page重复
    setPage(_page);
    setPerPage(_per_page); //注意:useState执行机制是异步的
    //init.run()
    //页面重新获取init.run(),否则,页码等即使点击改变了页面也不会改变。但setPage和setPerPage是异步的,init.run()的会先于异步操作进行执行,解决方法:异步操作可以使用useEffect结合的方式解决
;

4.index.tsx中需要使用的拆分出来的小组件,放在新建的BasicList/builder中,例如BasicList/builder/ActionBuilder.tsx

将需要很多操作的组件放在BasicList/component/下(Modal.tsx, style.less)

?.

const data = init?.data?.dataSource //?.省略了判断init下的data是否为空的过程

ts中给了类型,就有代码提示了,很方便

5.国际化

src/locales/很多语言文件夹/页面的不同位置的设置

6.在类型定义文件pages/BasicList/data.d.ts文件中如果要修改某个类型名,可以按F2再修改,那么tsx文件中使用这个类型的地方都会自动智能修改;

declare module BasicListApi 
  //类型提示。使用json2ts把后台数据转变一下,并命名为BasicListApi,在useRequest后面用<data: BasicListApi.Data>定义一下
  //module用的多于namespace(官网推荐),type用的多于interface(官网上推荐使用interface,但是type是大势所趋了,所以用type)。export interface,可以不加export,type也是这样

  type ActionHandler = (action: BasicListApi.Action, record: any) => void;

  type Page = 
    title: string;
    type: string;
    searchBar?: boolean;
    trash?: boolean;
    [key: string]?: any; //不确定的字段
  ;

7.错误捕捉提示是全局的话,放在app.tsx的errorHandler函数中处理;是局部的话,可以在useRequest的第二个参数中onError设置


forEach没有返回值(不用另外变量来承接,本身直接返回),输出可能比输入少
map有返回值,输入多少输出多少

数组.some(…)找值,返回值是true或者false
数组.find(…)返回的是具体的值


在src/locales/en-US或zh-CN中添加自己创建的路由的列表的中英文名称


改数据类型,在数据名的地方按住F2,修改后引用该类型的地方都智能地改为新名字


URI 约等于 URL+ URN
URI(Uniform Resource Identifier统一资源标识符)身份证号
URL(Uniform Resource Locator统一资源定位符)身份证地址
URN(Uniform Resource Name)身份证姓名

URI一般形式为scheme://<authority>/path
scheme是http https之类的
<authority>=username:password@host 是需要授权,一般的网址没有这个
<path>=path/path2/path3?<query>#<fragment>多个层级
<query>查询 是键值对key=value <fragment>片段 是一个字段
http://www.home.com/table/keys?color=red#top&shape=rectangle

React Router的三种模式:Browser Hash Memory

Browser(推荐)Hash
www.test.com/admin
说明:访问的是/admin/index.html等index文件
www.test.com/#/admin
说明:#以后的变更不会发送给服务器处理,
访问的是根目录下的文件/index.html

Browser模式下:
umi.useLoaction的loaction.pathname就是上面网址的/path,也就是/table/keys,注意:这里path前是有/的
umi.useLoaction的location.search是?query,也就是?color=red和shape=rectangle
umi.useLoaction的location.hash是#fragment,也就是#top
umi.useloaction的location.query是一个对象,里面包含键值对,location.query.color=red

路由


	path: '/user/*'或者path: '/user/:id1/:id2'
	component: './User.tsx'

可以匹配到www.test.com/user/5/123

User.tsx
umi.useLocation的location.pathname = /5/123
umi.useParams如果命名为params,则params.id1 = 5

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4pMwUc8-1655122650176)(./antd-pro-v5/1.png)]

遇到的问题:

1.yarn start后webpack一直是99%,然后localhost:8000一直进不去登录页面,转圈圈loading(node_modules/@umijs/runtime does not exist in container)

解决方案:删除src 下 .umi 文件,再重新yarn start

解决方案:删除 node_modules src/.umi package-lock.json(可能yarn.lock yarn-error.log也要删),然后重新安装依赖npm install,再yarn start。
然后又报错,ERROR in ./node_modules/swagger-ui-react/swagger-ui.js 2:107055-107070.Module not found: Error: Can’t resolve ‘btoa’ in ‘D:\\Desktop\\projectantdpro\\node_modules\\swagger-ui-react’。应该是安装依赖时网速不好一些没下下来。
npm install --save btoa,然后在yarn start就可以了。
参考:[ant design pro (umijs) 报 AssertionError ERR_ASSERTION]: filePath not found of /home/ifnk/proj/blog-web/node_modules/umi/node_modules/@umijs/runtime 的解决方法 - ifnk - 博客园 (cnblogs.com)
[antd-design-pro v5 mac 系统,每次安装完新的包,重新打包都会报一下错误AssertionError ERR_ASSERTION]: filePath not found of /Volumes/存储盘/webspace/dom/myapp/node_modules/@umijs/renderer-react · Issue #8835 · ant-design/ant-design-pro (github.com)

以上是关于antdprov5的主要内容,如果未能解决你的问题,请参考以下文章

想必大家在做参数验证的时候,都会遇到一个问题,就是如何验证枚举? 自定义annotation 自定义Validator

安装proe5.0之后,总是会出现错误日志,但还可以使用。就是每次打开也都会产生一个附带的日志???

使用手机地图时,比如搜狗地图、百度地图,都会出现“ERR:Network creat fail” ,这个是由于啥原因呢?

没有执行力,一切都是0,优秀都会沦为平庸

微服务系统中的数据一致性,你都会了吗

javascript做j简单的开关灯 就是两个按钮 按一下按钮整个页面都会变蓝 按另一个按钮 整个页面都胡变黑的