reactjs - 在 2 个项目之间共享相同的 redux 代码
问题描述
我有一个 react web 应用和 react-native 应用,它们共享几乎相同的 redux 代码(actions/services/reducers)。
是否可以在不同的项目中构建 redux 部分,所以我只需维护一次,然后将其导入 2 个项目以使用它?
解决方案
是的,有可能,您需要使用 action reducer 创建节点包并将其导出到 index.js 中。这是一个非常复杂的问题,所以我会告诉你我是如何做到的。
我在 web 和移动项目之外使用https://www.npmjs.com/package/create-react-library创建节点包。在那里你需要放置你的 reducer、actions、const 并且你需要在 index.js 中导出所有的函数和对象。
完成此操作后,您需要将此节点模块放入您的 Web 应用程序节点模块中。为此,我可以推荐 lerna,它使用自举来做这个魔术,它正在项目之间创建符号链接。
比我在 web 和移动应用程序中使用的 createStore 不同,因为还有来自另一个库的另一个 reducer 也在使用 redux,你可以将它们组合起来。
对于 react-native lerna sym 链接不起作用,因为 Metro 无法在节点模块中加载项目之外的模块来执行此操作,您需要放入 metro.config.js extraNodeModules。您的项目可以使用您的 redux 代码。
推荐阅读
- excel - 如何在 VBScript 中使用 Excel WorksheetFunction.CountA?
- mysql - Mysql试图加载已卸载的插件
- html - 如何在 Chrome 开发工具的设备模拟器中计算高度?
- tally - 有没有办法在erp9中获取当前账单的收据号
- pandas - 将 pandas 多索引数据帧转换为一个简单的数据帧,所有索引都在列中
- python - Python to_datetime(来自 int/float 的 3 列)
- android - 使用 Flutter 录音
- unity3d - 统一铸造 3d
- python - 是否可以使用 Python 定义没有值的枚举?
- flutter - Flutter:将小部件移动到另一个位置