- 博客(41)
- 收藏
- 关注
原创 使用 redux 做主题切换
,},},},});“我们系统中采用 Redux 管理全局主题状态,切换主题后会自动通知所有订阅组件刷新样式,组件通过获取 theme 状态,页面统一使用theme-dark类名控制样式变量。同时也支持持久化到 localStorage,下次打开时自动恢复。
2025-07-06 16:38:33
117
原创 企业 OA 系统
OA 系统侧重流程管理和提升办公效率,而ERP 系统则更关注企业运营中的资源统筹与计划管理。维度ERP 系统OA 系统目标管理企业资源,计划与运营管理办公流程,提高沟通效率核心模块财务、库存、采购、销售、生产审批、考勤、公告、文件、日程用户角色财务、采购、销售、生产人员员工、行政、人事、管理者数据类型财务数据、库存数据、业务单据流程数据、文件、审批记录工作特性强业务规则、可量化强流程控制、协同为主。
2025-06-30 15:46:40
401
原创 TypeScript
常用于泛型约束,代表非原始类型的一种类型,不支持 原始类型,支持所有 引用类型。可以理解成 new Object,和第一个一样,原始类型 和 引用类型 都可以。1. top type:顶级类型 any unknown,可以包含下面所以类型。(1)unknown 不可以赋值给别的类型的,只能赋值给自身或者 any。虽然字面量模式可以赋值任意类型,但是赋值之后无法修改。所有原始类型以及对象类型都指向 Object。在 ts 中,Object 表示包含所有类型。生成 package.json。
2025-05-25 14:53:47
427
原创 React 与 TypeScript 极客园移动端
(2)限制 useState 函数的参数必须满足类型为:User | () => User | undefined。(1)限制 useState 函数参数的初始值必须满足类型为:User | () => User。(2)绑定 prop 时如果绑定内联函数直接可以推断出参数类型,否则需要单独注解匹配的参数类型。组件经常执行类型为函数的 prop 实现子传父,这类 prop 重点在于函数参数类型的注解。(2)限制 setUser 函数的参数类型可以是 User | null。
2025-05-22 16:06:20
666
原创 Class 类组件
(2)componentWillUnmount:组件卸载时自动执行 - 清理副作用。(1)componentDidMount:组件挂载完毕自动执行 - 异步数据获取。概念:类组件和 Hooks 编写的组件在组件通信的思想上完全一致。(3)通过 render 来写 UI 模版 (JSX语法一致)(2)子传父:通过 prop 绑定父组件中的函数,子组件调用。类组件就是通过 JS 中的类来阻止组件的代码。(3)兄弟通信:状态提升,通过父组件做桥接。(1)父传子:通过 prop 绑定数据。
2025-05-22 12:44:55
330
原创 zustand
对于异步的支持不需要特殊的操作,直接在函数中编写异步逻辑,最后只需要调用 set 方法传入新状态即可。场景:当单个 store 比较大的时候,可以采用 切片模式 进行模块拆分组合,类似于模块化。
2025-05-22 12:34:19
209
原创 项目制作流程
3. 在 router/index.js 文件中引入组件进行路由配置,导出 router 实例。有些路由页面的内容信息比较敏感,如果用户没有经过登录获取到有效 Token,是没有权限跳转的,实现效果:页面在刷新时可以根据当前的路由路径让对应的左侧菜单高亮显示。(1)redux 中编写获取 Token 的 异步获取和同步修改。(1)菜单参数 Item 中 key 属性换成路由的路由地址。(2)找到菜单组件负责高亮的属性,绑定当前的路由路径。(2)点击菜单时通过 key 获取路由地址跳转。
2025-05-18 16:47:40
2034
原创 账单统计区域 mobile
2. 点击取消 / 确认按钮以及蒙层区域的都可以关闭弹框。3. 弹框关闭时箭头朝下,打开时箭头朝上。2. 通过切换状态变化实现功能。1. 点击打开时间选择弹框。1. 准备一个状态数据。
2025-05-16 15:09:33
161
原创 antd 主题色定制
antd-mobile 中的主题变量也是在 :root 下声明的,所以在有些情况会由于优先级的问题无法覆盖。通过 :root:root 显式地让你所写内容的优先级更高一些,确保主题变量的成功覆盖。全局文件 theme.css。全局文件 theme.css。整个应用范围内的组件都生效。只在某些元素内部的组件生效。
2025-05-15 19:25:57
296
原创 mock 数据( json-server )
1. 在项目中安装 json-server。2. 准备一个 json 文件。4. 访问接口进行测试。
2025-05-15 17:50:14
289
原创 react 基本写法
一般思路:(1)编写一个use打头的函数(2)函数内部编写封装的逻辑(3)return 出去组件中用到的状态和方法(4)组件中调用函数解构赋值使用// 封装请求数据的 hookgetList();}, []);return {调用。
2025-05-13 11:04:59
350
原创 Promise 自定义封装
因为 callback 只属于 return 的新 Promise,所以放在 return 里面,既避免污染作用域,又节省内存,还保证每次都是干净独立的 callback。
2025-04-29 01:41:51
258
原创 ESLint报错:eslint.config.mjs
在学习webpack代码分割,按需加载时,ESLint检查import报错,因为ESLint不支持动态导入。通过ESLint解析器。
2025-04-22 23:33:29
262
原创 webpack相关配置--高级
本章节主要介绍 Webpack 高级配置。所谓高级配置其实就是进行 Webpack 优化,让我们代码在编译/运行时性能更好~
2025-04-20 20:06:36
2086
原创 webpack相关配置--初级
webpack 本身只能处理 js、json 等资源,其他资源需要借助 loader,Webpack 才能解析。原因是 Webpack 对 js 处理是有限的,只能编译 js 中 ES 模块化语法,不能编译其他语法。其次开发中,团队对代码格式是有严格要求的,我们不能由肉眼去检测代码格式,需要使用专业的工具来检测。有人可能会问,js 资源 Webpack 不能已经处理了吗,为什么我们还要处理呢?开发中一点点写 rules 规则太费劲了,所以有更好的办法,继承现有的规则。(3) extends 继承。
2025-04-19 21:02:57
1519
原创 axios 封装
但是Fetch的缺点也很明显,首先需要明确的是Fetch是一个 low-level(底层)的API,没有帮助你封装好各种各样的功能和实现;Fetch是AJAX的替换方案,基于Promise设计,很好的进行了关注分离,有很大一批人喜欢使用fetch进行项目开发;比如发送网络请求需要自己来配置Header的Content-Type,不会默认携带cookie等;axios是目前前端使用非常广泛的网络请求库,包括Vue作者也是推荐在vue中使用axios;比如不支持取消一个请求,不能查看一个请求的进度等等;
2025-04-17 21:44:05
309
原创 jwt问题
如果有人对头部以及负载内容解码后进行修改,再进行编码,最后加上之前的签名组合形成新的JWT的话,那么服务器端会判断出新的头部和负载形成的签名和JWT上附带的签名是不一样的。如果要对新的头部和负载进行签名,由于不知道服务器加密时使用的秘钥,得出来的结果也是不一样的。拿到编码后的 header 和 编码后的 payload 使用 密码进行签名。Signature需要使用编码后的header和payload以及我们提供的一个秘钥,然后使用header中指定的签名算法进行签名,签名的作用是保证JWT没有被篡改过。
2025-04-16 22:08:04
219
原创 redux-toolkit 相关问题
如果你的异步操作较为简单,且你希望 Redux 管理整个异步请求的生命周期(包括 pending、fulfilled 和 rejected 状态),那么。:在这种方式中,你需要手动管理异步操作的状态,例如 loading、error 等。如果你需要更多的控制,或者异步操作较为复杂(例如依赖多个异步操作、需要额外的逻辑等),则直接使用。提供了许多自动化的功能,但在复杂的异步逻辑(如多步异步请求、依赖关系)中,它可能不如手动。适用于:复杂的异步操作(如处理多个依赖的请求、多个步骤的异步操作等)。
2025-04-15 23:06:27
946
原创 子组件传参的方式
父组件通过props将一个回调函数传递给子组件。子组件可以在需要的时候调用回调函数,将数据传递给父组件。但是,这种方法是在子组件里触发的,有没有在父组件里触发的方法。有,子组件暴露方法给父组件,让父组件手动调用。是一个非常经典的的场景,这在 React 中是完全可以实现的,关键是使用forwardRef和这两个 Hook 组合。
2025-04-15 13:18:29
300
原创 token相关问题
比如:一个账号只能在一台设备登录,如果用户在别的设备登录了,之前的 refreshToken 会被废弃。如果你实现了退出逻辑,比如点击“退出登录”会清除 refreshToken,那自动登录自然就失效了。用户输入账号密码 → 发请求给后端 → 后端验证成功后返回 token。这样用户第一次进入页面时,如果本地没有 token,就尝试刷新获取。本地没有 refreshToken,就不能换取新 token。已经过期,就不能换新 token 了。,但 HTTP 状态是 200,被用户清理,或被某些插件修改。
2025-04-14 23:18:40
330
原创 form表单数据回填
进入 Publish 页面判断是否有 id (是否是编辑)是 → 发送 GET 请求获取文章详情解析 data,回填 form、封面图、图片类型页面表单完成初始化,用户可以继续编辑或修改。
2025-04-13 15:03:31
175
原创 提取封面图 URL 的原理和过程
在表单中,你用了antd的Upload上传时会自动把图片发给action指定的后端地址,后端返回图片地址。你监听onChange拿到图片上传的结果。fileList。
2025-04-13 14:44:33
270
原创 状态引用发生变化,useEffect 就会触发
即便 page 是同一个值,只要对象引用变化,就会触发 effect。这样可以保证总是生成一个新对象,防止某些场景下不触发更新。本来就是 1,为什么再设一次。来判断是否触发,而不是按值。,也能触发刷新列表?
2025-04-13 11:45:23
208
原创 React 路由懒加载(lazy loading)
按需加载模块,只在用户访问某个页面时才加载对应组件,减少首屏加载体积、提升性能。Suspense是的,React 的懒加载组件<Suspense>,否则运行时报错。fallback属性用来定义加载中的提示内容。包装后,React 会等组件被真正渲染时,才去加载对应模块。
2025-04-12 22:22:30
303
原创 css样式记忆
rgb(0 0 0 / 10%) => 阴影颜色:黑色,透明度为 10%50px => 模糊半径:50px(阴影很模糊,范围大)0 => 水平偏移(x 轴):无偏移。0 => 垂直偏移(y 轴):无偏移。
2025-04-12 13:45:29
91
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人