问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

React + typescript + antd开发前端应用(八)使用全局状态

发布网友 发布时间:2024-09-17 08:58

我来回答

1个回答

热心网友 时间:2024-09-28 02:51

上一篇文章:React + typescript + antd开发前端应用(七)添加菜单点击功能

在处理需要跨多个组件频繁访问的状态时,如果通过在父组件定义状态并通过属性传递给子组件的方式来进行访问,当组件层级较深时,这种方法将变得非常麻烦。同时,从菜单添加点击事件的角度来看,将更新状态的函数传递到子组件和行为组件中的方式并不合理,这给代码的可读性带来了困扰,并且在不同组件间传递的参数较多,容易产生错误。在后续的代码编写中,应根据实际情况,不必过分追求UI组件和行为组件的完全分离。

1、创建AppContext及AppContextProvider

分析之前的代码,tabs组件需要两个状态:一个是记录当前激活的标签页的key,另一个是tabs页签项的数组对象。这两个状态可能在AppTabs组件和AppMenu中需要访问,因此需要创建一个全局对象来保存这两类数据。在src\context目录下创建AppContextProvider.tsx文件,并编辑其内容如下:

2、修改index.tsx

使用刚刚创建的AppContextProvider包裹AppLayout组件,以便在AppLayout及其子组件中使用全局状态对象及函数:

3、修改src\layout\AppLayoutFuncs.ts文件

该文件移除了行为函数,否则状态数据、更新状态的函数都需要作为参数传递到函数中,这会降低代码的可读性:

4、修改src\layout\AppLayout.tsx文件

使用AppContext,添加行为函数:

5、修改src\layout\AppTabsFuncs.ts文件

删除行为函数:

6、修改src\layout\AppTabs.tsx文件

使用全局状态:

7、修改src\layout\AppMenuFuncs.ts文件

8、修改src\layout\AppMenu.tsx文件

完成代码重构后,回到浏览器中进行测试,以验证全局状态是否能够正常工作。

依然建议读者亲自编写这些代码,而不是简单地复制粘贴。在编写代码的过程中,理解每一行代码的意义,这对熟悉React和typescript都有很大帮助。

热心网友 时间:2024-09-28 02:52

上一篇文章:React + typescript + antd开发前端应用(七)添加菜单点击功能

在处理需要跨多个组件频繁访问的状态时,如果通过在父组件定义状态并通过属性传递给子组件的方式来进行访问,当组件层级较深时,这种方法将变得非常麻烦。同时,从菜单添加点击事件的角度来看,将更新状态的函数传递到子组件和行为组件中的方式并不合理,这给代码的可读性带来了困扰,并且在不同组件间传递的参数较多,容易产生错误。在后续的代码编写中,应根据实际情况,不必过分追求UI组件和行为组件的完全分离。

1、创建AppContext及AppContextProvider

分析之前的代码,tabs组件需要两个状态:一个是记录当前激活的标签页的key,另一个是tabs页签项的数组对象。这两个状态可能在AppTabs组件和AppMenu中需要访问,因此需要创建一个全局对象来保存这两类数据。在src\context目录下创建AppContextProvider.tsx文件,并编辑其内容如下:

2、修改index.tsx

使用刚刚创建的AppContextProvider包裹AppLayout组件,以便在AppLayout及其子组件中使用全局状态对象及函数:

3、修改src\layout\AppLayoutFuncs.ts文件

该文件移除了行为函数,否则状态数据、更新状态的函数都需要作为参数传递到函数中,这会降低代码的可读性:

4、修改src\layout\AppLayout.tsx文件

使用AppContext,添加行为函数:

5、修改src\layout\AppTabsFuncs.ts文件

删除行为函数:

6、修改src\layout\AppTabs.tsx文件

使用全局状态:

7、修改src\layout\AppMenuFuncs.ts文件

8、修改src\layout\AppMenu.tsx文件

完成代码重构后,回到浏览器中进行测试,以验证全局状态是否能够正常工作。

依然建议读者亲自编写这些代码,而不是简单地复制粘贴。在编写代码的过程中,理解每一行代码的意义,这对熟悉React和typescript都有很大帮助。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单机组装6000元预算,INTEL和AMD下不同的配置方案 手上有5000元,想DIY一台台式机,主要是玩大型单机游戏,像孤岛危机2。求... ...及各自优点缺点和如何修改。。 CPU 至强 E3 1230 v2主板 微星Z... 求配家用游戏电脑4000-6000 嘴巴上长水泡怎么办? 嘴巴旁边长了水泡怎么回事 他不回信息的句子 市面上有哪些浪漫又个性的牛仔单品值得入手? 2021年流行什么外套显瘦不挑身材 夏季有哪些百搭又显高级的单品值得选择? 2023新春版:React+Antd开发Chrome插件教程(Manifest V3) 腿上湿疹如何根治 工伤不辞工就业补助金会每年扣一些吗 工伤后不辞职的话医疗补助金和伤残就业补助金会扣吗? 拖欠一次性伤残就业补助金有赔偿吗 红眼病的症状用什么药 儿童红眼病治疗方法 儿童红眼病的症状 妇产科护士手册妇产科护士工作职责 关于妇产科的护士 护士妇产科工作内容 已知根号a-1是一个无理数,他的整数部分是2,求a的取值范围 做泡菜咸了怎么办 杭州女大学生凭一个"蛋"赚了16万 网友打赏8万次是怎么回事? 为啥淘宝会出现帮买 找一部小说,开始情节是:主角坐飞机回归都市,认识了当地一个老大的女儿... 2024 电动滑板车推荐,7月更新(小牛、小米、九号、RND、希洛普、联想... 如何解决MySQL下载安装问题mysql下载安装问题 MySQL安装遇到问题教你解决下载安装失败的困扰mysql下载安装失败 腾蛇和勾陈什么意思 ant design vue 安装引入, ant-design-vue 中文文档 webpackreact增量打包(webpack打包按需加载) 陈忠林是谁 重庆大学法学院师资队伍 重庆大学法学院院系调整 治愈到爆的网名 好听治愈网名 华为p60 pro价格是多少? 王者荣耀赵云和娜可露露哪个好 老师回复表情但是我收到的是乱码,图在下方,希望好心人帮解答,因为我想... 如何将pdf中的图片或者文字转入word文档中? 如何把pdf图片复制到word中? 阴阳师四种达摩都怎么用 阴阳师达摩怎么用介绍_阴阳师达摩怎么用是什么 苏宁易购店庆是什么时候 女性更年期常喝茶有什么好处? 女性长期喝普洱茶对身体的好处和坏处 女人长期喝普洱茶的好处和坏处! 女性长期喝普洱茶的好处 女性长期饮用普洱茶对身体有哪些好处 女性喝普洱茶的好处与坏处