jsx和vue模版区别

5 - Hooks

内置Hooks

useState

state是异步更新

变量不用与JSX 就使用useRef

setState(pre + 1) setState(pre => pre + 1) 不会被合并

state不可变数据,不能去直接修改state的值,而是需要你传入一个新的值

type FunctionComponent<P = {}> = (props: P) => ReactElement | null;

状态提升,父状态,子通过函数调用

immer 改变 不可变数据

数组方法

find findIndex indexof map filter splice push

useEffect

组件挂载时 组件更新时 组件卸载时

为什么执行两次? react18开始,会在开发环境下执行两次 模拟组件的创建销毁, 再创建的完整流程

useRef

操作DOM

或者定一个JS变量,不驱动视图更新

useMemo

缓存数据,针对大数据

useCallback

缓存函数

自定义Hooks

DOM 事件 定时器 AJAX

第三方Hooks

ahooks react-use

6 - react样式处理

旧时的CSS规范

BEM

CSS Module

sass

CSS in js

styled-components

styled.a

styled-jsx

emotion

7- react-router

useLocation 获取pathname useNavigate 创建跳转对象

8 - UI组件库

Popconfirm Modal

Manage UI 管理页面UI展示 我的问卷: 列表卡片 + loadMore 星标问卷: 列表卡片 + 分页 回收站: 表格 + 分页

9- 表单组件/受控组件

HTML元素添加事件的方式

  • 标签属性
  • onXxxxx
  • addEvenListener

类似Vue双向绑定/受控组件

dangerouslySetInnerHTML html解析

原始html使用

  • input
  • textarea
  • radio
  • checkbox
  • select
  • form

搜索组件

  • 点击搜索(或者清空)
  • 跳转路由(增加参数) 也是受控组件,数据双向绑定

点击登录

  • 查看remember值

  • true 就记住密码

  • false 就忘记密码

  • 组件挂载的时候

  • 获取LocalStorge的密码

  • 设置密码到表单 利用Antd Form组件的hook useForm

表单校验

  • antd的rules
  • 第三方校验库

10 - mock koa craco

mock 模拟数据

koa启动服务

const Koa = require('koa');
const Router = require('koa-router');
 
const app = new Koa()
app.use(router.routes())
 
app.listen(3001)

12 Redux

原始状态管理

createContext 创建 Provider 提供者 useContext 消费

useReducer --》 useReducer

创建全局状态信息