用户管理的 CURD 应用
(原版)用户管理的 CURD 应用地址:https://github.com/sorrycc/blog/issues/18
(张立志视频版)用户管理的 CURD 应用地址:https://www.aspirantzhang.com/dva3.html
名词解释
1.Redux:(瑞大可死)一个中间件,用来在React里处理数据的流向和存储,提出了一个store(存储)的概念,但是Redux没有考虑异步数据
2.Redux-saga:(瑞大可死-撒噶)专门处理异步数据
3.dva:首先是一个基于 redux 和 redux-saga 的数据流方案,然后为了简化开发体验,dva 还额外内置了 react-router 和 fetch,所以也可以理解为一个轻量级的应用框架。
4.umi:中文可发音为乌米,是可扩展的企业级前端应用框架。Umi 以路由为基础的,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进行功能扩展。然后配以生命周期完善的插件体系,覆盖从源码到构建产物的每个生命周期,支持各种功能扩展和业务需求。
5.Reducer: 异径管; 大小头;变径管;节流 [rəˈdusər],代表同步,可以理解为一个水龙头,它后面是汇聚水的,水可能有不同的来源,最终会从水龙头里流出来,相当于一个归类的过程。Reducer是仓库返回给页面的唯一出口
6.Effect:副作用;影响[ɪˈfekt];代表异步,在不同的异步的数据里面去接收各种各样接口的数据,统一返回给Reducer,Reducer再返回给页面。
7.Subscription:订阅[səbˈskrɪpʃn];针对一些常见的情形,例如键盘的按键是翻页,是键盘的动作触发了翻页,这样的一个动作叫翻页。订阅涉及到订阅源,每次订阅都回订阅一个数据源,然后返回给页面,或者执行其他的动作。订阅无所谓同步异步,只是一个快捷方法。Subscription虽然在仓库里,但相当于页面调用。
8.dispatch:分派,派遣[dɪˈspætʃ],可以派Reducer也可以派Effect,所以叫分派
9.put:给,仓库里面不同方法之间的一个给的动作
10.model:模型;样式; [ˈmɑːdl],仓库
11. modal:模式的; [ˈmoʊdl],弹窗
12. “.ts”: TypeScript是一种由微软开发的开源、跨平台的编程语言。它是JavaScript的超集,最终会被编译为JavaScript代码。
13.”.tsx”: 使用 typescript 书写 jsx
14.jsx: JSX是一种JavaScript的语法扩展,运用于React架构中,其格式比较像是模版语言,但事实上完全是在JavaScript内部实现的。
15.enum 枚举
笔记
1. typeof运算符,用来检测一个变量的类型
JSON.stringify()和JSON.parse()是一个来回转换的过程
2. Promise. resolve()可以快速的获得Promise对象
3.yield 可以看成等的意思
4.创建umi脚手架,
先创建文件夹,然后在这个文件夹下运行cmd命令
通过官方工具创建项目 $ yarn create @umijs/umi-app
安装依赖 $ yarn
5. tree /f 可以查看树形的目录结构
6. export default()=>{}这是函数组件
7.快速创建react组件,在vscode工具市场搜es7,rce快速创建类组件,rac快速创建函数组件
https://blog.youkuaiyun.com/hbiao68/article/details/101113155
8.umi中已经安装了插件形式的antd,所以我们不需要手动去安装,直接去官网找合适的组件用就好了。
9.在umi里dva是配置开启,在umi文档里搜dva可以看model的样例
10.nfn快速创建一个箭头函数,imp快速import
11. ctrl + shift + n 开一个新的VS code 窗口
12.effects里的函数前要加个*号,
13.action 可以看成{type,payload}的组合,type没用的话可以删掉
14.像state,action这样的参数可以展开,直接{users},在花括号里写上自己所需要的内容。
15.配置跨域代理,在umi文档里搜proxy
.umirc.ts
proxy: {
'/api': {
'target': 'http://public-api-v1.aspirantzhang.com',
'changeOrigin': true,
'pathRewrite': { '^/api' : '' },
},
},
然后就可以直接用http://192.168.1.7:8000/api/users访问了,注意中间那个“api”
service.ts
request('/api/users', {
16. const [变量名,修改这个变量的函数方法]=useState(false)
等于号左边是个数组,,快捷打ussa差不多
17.onClick后面只能跟函数名或者箭头函数,可以在箭头函数里调用函数并且传参。
18.useEffect,相当于componentDidMount,在组件加载后调用
19. const data=yield call(editRecord,{id,values});
call有其他的数据要传的话,加个逗号放在第二个参数
20. then()方法是异步执行。
意思是:就是当.then()前的方法执行完后再执行then()内部的程序,这样就避免了,数据没获取到等的问题。
21. catch(e)是用来捕获错误
遇到的问题
1. 参数“tags”隐式具有“any”类型。ts(7006)
解决办法:
tsconfig.json文件中的“ strict”参数设置为false
2.