【发布时间】:2020-07-09 19:54:06
【问题描述】:
我有一个 react web 应用和 react-native 应用,它们共享几乎相同的 redux 代码(actions/services/reducers)。
是否可以在不同的项目中构建 redux 部分,因此我只需维护一次,然后将其导入到 2 个项目中以使用它?
【问题讨论】:
标签: reactjs react-native redux node-modules
我有一个 react web 应用和 react-native 应用,它们共享几乎相同的 redux 代码(actions/services/reducers)。
是否可以在不同的项目中构建 redux 部分,因此我只需维护一次,然后将其导入到 2 个项目中以使用它?
【问题讨论】:
标签: reactjs react-native redux node-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 代码。
【讨论】: