reactjs - 在 react 组件中保持与 ui 相关的强状态是一种不好的做法吗?
问题描述
我正在将我的 reactJs 应用程序迁移到 redux/mobx。现在我有 3 个组件,每个组件在它们的状态下都有以下结构:
name:string,
surname:string,
showError: boolean,
loading:boolean
如您所见,将姓名/姓氏移动到集中式存储库以保持全局状态是有意义的。我不太确定 showError 和加载:它们是布尔值,用于显示错误消息和特定组件内部的微调器。
我个人不喜欢将这种“与 UI 相关的状态”置于集中状态的想法,我想让它留在特定组件内部,因为其他组件永远不需要访问/更新这些东西。
所以我的想法如下:
this.state = {showError, loading};
this.businessState = props.state;
简而言之,我将继续使用 React 的 setState() 函数更新“状态”,同时将所谓的“业务状态”的管理留给 redux/mobx。
这是一个好的做法还是我做的特别糟糕?
解决方案
我个人对此没有任何问题,因为“加载”和“显示错误”与状态相关,而不是 UI 组件。基本上是说,当我从 API 调用中填充状态时,它是否已经完成并且有什么问题吗?UI 组件会相应地显示。
我会根据您的 BE 系统抛出的错误的结构将 showError 设为字符串或字符串 []。
我还将您的状态分解为特定的减速器,它们处理特定的业务功能并根据特定的业务功能加载状态,而不是加载页面上的每个组件。
我希望这在某种程度上有所帮助。
推荐阅读
- python - 使用 OpenCV 坐标裁剪图像
- c++ - 我可以以在特定目录中搜索 dll 的方式构建或编写代码吗?
- mysql - SQL输出多个值
- ios - 使用常规选项卡,无法锁定 iPad 应用程序的设备方向
- google-chrome-devtools - 除了 $x 之外,还有其他方法可以测试 XPATH 字符串吗?
- python - python中峰值突出的累积总和仅具有左基
- spring - 有没有大的spring-boot开源项目?
- vue.js - 请求失败,状态码 403 axios vue
- java - 在休眠搜索弹性搜索中实现“随机”排序
- django - 如何避免在 Django 中使用反向外键进行如此多的查询