Redux:不使用compose或applyMiddleware的区别?

问题描述

我以前有过这样的经历:

  createStore(reducers,{},applyMiddleware(reduxThunk));

只是在某处看到了一段不同的代码,现在使用compose将我的代码更改为此:

  createStore(reducers,compose(applyMiddleware(reduxThunk)))

到目前为止,两者都可以正常工作。但我不完全了解其中的区别。我以前有错吗?有人可以向我解释一下吗?

解决方法

“商店增强器”是Redux插件的一种特殊类型,它围绕商店包裹以赋予其更多功能。

createStore接受单个商店增强器作为参数,并使用它来定制创建的商店。

这意味着,如果您想一次使用多个商店增强器,则需要一种以某种方式将它们组合到单个商店增强器中的方法,以便将其传递给createStore。 / p>

applyMiddleware是一种商店增强器,因此您可以直接使用它,并将其结果作为唯一的增强器传递到createStore

如果您想使用多个{em> 增强器,例如applyMiddlewaredevTools,则需要使用compose()将它们组合在一起。

请注意,您实际上应该使用our official Redux Toolkit package,它具有a configureStore API,已经可以使用一行代码为您正确设置Redux存储。

,

@markerikson是正确的。他们俩都工作良好。

  • 如果您正在开发简单的React应用,那么第一个就足够了。

  • 如果要处理大型项目,则需要使用第二个项目。如下所示:

    const history = createHistory(); const sagaMiddleware = createSagaMiddleware(); const routeMiddleware = routerMiddleware(history); const中间件= [thunk,sagaMiddleware,routeMiddleware];

    const composeEnhancers = (作为typeof组成的窗口[' REDUX_DEVTOOLS_EXTENSION_COMPOSE '])||撰写;

    const store = createStore( CombineReducers({ 减速器 路由器:connectRouter(history), }), composeEnhancers(applyMiddleware(... middlewares)), );

,

来自redux文档:

提示 compose所做的全部工作就是让您编写深层嵌套的函数转换,而无需向右移动代码。不要给它太多的荣誉!

还可以添加一些与thunk和中间件不同的增强功能。看看这个comment

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...