为 React 应用程序开发一个 Redux 存储作为单独的 NPM 模块

bes*_*ant 6 javascript modularity npm reactjs redux

是否可以将React AppRedux Store作为单独的npm 包开发,然后在React App 中开发Storeimport

例如:我有一个名为reactapp.

我开发了一个名为包reactapp-reduxstore包含Redux的商店,它的操作减速

现在,我将其导入reactapp-reduxstore到我的reactapp项目中

// other imports

import { store } from 'reactapp-reduxstore'

const ReactApp = () => (
<Provider store={store}>
    // React App Components
<Provider/>
)

// Mount ReactApp to DOM
Run Code Online (Sandbox Code Playgroud)

现在,如果我想使用我的redux 存储包中的操作,我会将操作导入到组件中。

import { addUser } from "reactapp-reduxstore/users"

// Use the action in my Component
Run Code Online (Sandbox Code Playgroud)

我只想知道,React项目的这种结构有多可行,以便将来我不会遇到代码管理问题。

注意:为简洁起见,不包括所有通用代码。

更新:这是我对上述使用经验的更新redux。你永远不应该那样做。管理redux变成了一项艰巨的工作。IMO,redux仅在真正需要时使用。否则,React 组件状态足以管理组件的状态。

GG.*_*GG. 4

那么,您的应用程序及其状态是紧密耦合的。大多数情况下,当您更新其中一项时,您还需要更新另一项。因此,每次修复错误或开发新东西时,您都必须更新和发布 2 个 NPM 包,而不是一个。

所以我想只有当我需要在多个应用程序中使用完全相同的存储、操作和减速器时我才会这样做。否则,我认为将应用程序的状态移动到另一个包中没有任何好处。这似乎是很多痛苦的额外工作却没有真正的好处。

  • 如果您要制作一个与您的 Web 应用程序紧密匹配的 React Native 应用程序,那么您可能希望共享一些 Redux 业务逻辑,并且拥有一个单独的包可能是有意义的。使用 lerna (https://github.com/lerna/lerna) 在 monorepo 中管理包还可以减少多个包管理的开销。如果我还没有共享代码的需要,我永远不会采用这种方法。如果以后确实有需要的话,事后分手并不难。 (6认同)
  • 那为什么不呢,但正如我所说,大量额外的工作并没有真正的好处。您可以使代码模块化且干净,而无需将代码拆分到不同的 NPM 包中。只需在项目中使用不同的文件夹和文件并导入/导出它们。 (2认同)