首页 > 解决方案 > 在 2 个项目之间共享相同的 redux 代码

问题描述

我有一个 react web 应用和 react-native 应用,它们共享几乎相同的 redux 代码(actions/services/reducers)。

是否可以在不同的项目中构建 redux 部分,所以我只需维护一次,然后将其导入 2 个项目以使用它?

标签: reactjsreact-nativereduxnode-modules

解决方案


是的,有可能,您需要使用 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 代码。


推荐阅读