redux 使用React & Saga 将子组件与父组件集成

ncecgwcz  于 2022-11-12  发布在  React
关注(0)|答案(1)|浏览(217)

因此,要求尽可能多地解耦,以便在删除任何集成的子组件时,父组件不会崩溃。其想法是创建带有根 Saga 中间件的父组件,中间件具有页眉、页脚和侧栏,进行验证和授权,并运行根saga。父组件将集成外部独立的子组件/项目,这些子组件/项目具有自己的一组Saga和Api调用。

我想要实现的目标将以下内容分离,并在单独的项目中创建ChildOneChildTwo,最后将它们集成到Parent项目中,作为pluginlibrary,但这些pluginslibraries将有自己的 Saga 和Api调用。
分离的原因公司有超过30个新项目,所有这些项目都由不同的开发人员处理。因此,我们试图将所有30多个项目集成到Parent项目中,目的是如果一个项目中断,其他组件将继续运行,并且如果我们集成或删除任何子组件,Parent也不需要进行自我调整,如以下结构所示,如果我们删除ChildOne组件,项目将中断,因为路径,即"../components/store/childone/saga"将无效。

我想知道使用injectReducer({ key: 'cartContainer', reducer }) & injectSaga({ key: 'cartContainer', saga });是否可以实现这一点,但请再次说明,您是否可以提供一个想法,说明如何使用此功能,在ParentChildren上的何处使用此功能,以及如何将所有childrenParent集成
我是相当新的React世界,所以我会感谢您的反馈,谢谢。
当前项目具有以下结构。
RootSaga.js

import ParentSaga from "../components/store/parent/saga"
import ChildOneSaga from "../components/store/childone/saga"
import ChildTwoSaga from "../components/store/childtwo/saga"

export default function* rootSaga() {
  yield spawn([
    ParentSaga(),
    ChildOneSaga(),
    ChildTwoSaga()
  ])
}

下面是routes.js的一个示例

import Parent from "../components/parent/index"
import ChildOne from "../components/childOne/index"
import ChildTwo from "../components/childOne/index""

const Routes = [

  { path: "/", component: Parent },
  { path: "/child-one", component: ChildOne },
  { path: "/child-two", component: ChildTwo }

这是我的index.js

import rootReducer from "./reducers"
import rootSaga from "./sagas"
const sagaMiddleware = createSagaMiddleware()

const store = createStore(
  rootReducer,
  composeEnhancers(applyMiddleware(sagaMiddleware))
)
sagaMiddleware.run(rootSaga)
70gysomp

70gysomp1#

虽然这不是对你问题的直接回答:
首先,看起来你在那里写的Redux代码已经非常过时了。你 * 应该 * 使用我们官方的Redux Toolkit包来写Redux逻辑,而不是使用过时的原始createStore API和手写的reducer逻辑。
多年来,我们一直在建议 * 反对 * 在几乎所有情况下使用sagas。今天更是如此- RTK Query解决了数据获取用例,新的RTK“监听器”中间件基本上可以通过更简单的API、更小的捆绑包大小和更好的TS支持来完成sagas所能做的一切。
请查看这些文档页面和帖子以了解更多详细信息:

最后,我们还有一个关于管理代码拆分的文档页面:

相关问题