我观察到使用 Redux 存储的开发人员有一个常见模式:当面对新的但略有不同的需求时,他们经常创建新功能并重写通用样板代码,包括减速器、thunk、动作和中间件。这可能会导致代码库中出现大量重复。
我们不能完全责怪开发人员,因为标准化和团队最佳实践通常是由团队领导完成的......
但是,当 API 或微服务标准化时(其中删除、创建、放置和获取等端点遵循可预测的结构),可以创建可以动态生成 Redux 减速器和操作的高阶函数。这减少了冗余并鼓励更具可扩展性的架构。以下是如何实现这一点的示例:
https://gist.github.com/ARAldhafeeri/1ad10710bee110b9a88013984272fbbd
它有 200 行代码,这里有一个示例用法,它的作用是:
-
动态 Redux 切片创建: 函数 createEntitySlice 为实体(如预订或用户)生成 Redux 切片,允许开发人员使用最少的样板代码轻松创建、读取、更新和删除任何实体的数据。
-
可自定义参数:该函数接受可自定义参数,例如entityName、endpoints、extraReducers、extraThunks和extraActions,为不同实体和特定需求提供灵活性。
-
基本 CRUD thunk: 它为获取、创建、更新、删除和搜索等常见操作提供基本异步 thunk,这些操作根据提供的端点与 API 进行交互。这些 thunk 管理必要的 API 调用并处理错误。
- 用于状态管理的Reducers:切片包含用于管理加载状态、存储获取的数据、处理错误以及执行搜索和重置状态等操作的Reducers。
-
中间件集成:代码集成了侦听器中间件来处理副作用,例如根据 CRUD 操作的结果显示成功或错误消息。它还增强了中间件,使其能够自定义状态更改的行为,例如在满足某些条件时触发其他操作。
-
优化的代码可重用性:通过使用这种高阶函数方法,开发人员可以避免重复的样板代码,并为不同的实体创建可重用的动态切片,而无需每次手动编写操作和化简器。
-
可扩展和模块化: 高阶函数从 redux 存储中生成某个功能所需的功能,我们也可以将其中的所有内容从减速器扩展到初始状态,因此当自定义端点到达时,它不会完全融入我们创建的通用基础中,我们可以简单地添加它。
最好的,
艾哈迈德,
以上是我如何在不破坏应用程序的情况下用 Just in Redux Store 替换代码行!的详细内容。更多信息请关注PHP中文网其他相关文章!