compose(...functions)
概述
从右到左组合函数。
这是一个函数式编程的工具函数,并作为 Redux 中的一个方便工具包含在内。
你可能想用它来连续应用多个store增强器。
compose 同样可作为一个通用的独立方法使用。
Redux Toolkit
本页介绍 Redux Toolkit 所基于的 Redux 底层机制。在实际应用中,通常会使用 Redux Toolkit 的 configureStore 和 createSlice,而不是自行编写这些底层代码。不过,了解这些 API 的底层原理仍然很有价值。
了解如何使用当前推荐的方式编写 Redux 应用,请参阅 Redux Essentials 教程。如需更新现有代码,请参阅迁移到现代 Redux。
通常无需直接调用 compose。configureStore 会配置标准的 applyMiddleware 和 Redux DevTools store enhancer,并提供 enhancers 回调以便添加其他 enhancer。
参数
- (arguments): 要组合的函数。每个函数期望接受单个参数。其返回值会作为参数传递给左侧的函数,以此类推。唯一例外的是最右侧的函数参数可以接受多个参数,因为它将决定组合后最终函数的参数签名。
返回值
(Function): 通过从右到左组合给定函数生成的最终函数。
示例
此示例展示如何使用 compose 将 applyMiddleware 和另一个 store enhancer 应用到 store。enhancer 会从右向左应用,因此 applyMiddleware 会包装 persistEnhancer 生成的 store。
import { createStore, applyMiddleware, compose } from 'redux'
import { thunk } from 'redux-thunk'
import { persistEnhancer } from './enhancers/persist'
import reducer from '../reducers'
const store = createStore(
reducer,
compose(applyMiddleware(thunk), persistEnhancer)
)
小贴士
compose只是让你写出深度嵌套的函数转换时不出现代码右移的情况。别过度神化它!