compose(...functions)
Overview
Composes functions from right to left.
This is a functional programming utility, and is included in Redux as a convenience.
You might want to use it to apply several store enhancers in a row. compose
is also usable as a general-purpose standalone method.
Warning
You shouldn't have to call compose
directly. Redux Toolkit's configureStore
method automatically configures a Redux store with the standard applyMiddleware
and Redux DevTools store enhancers, and offers an enhancers
argument to pass in additional enhancers.
Arguments
- (arguments): The functions to compose. Each function is expected to accept a single parameter. Its return value will be provided as an argument to the function standing to the left, and so on. The exception is the right-most argument which can accept multiple parameters, as it will provide the signature for the resulting composed function.
Returns
(Function): The final function obtained by composing the given functions from right to left.
Example
This example demonstrates how to use compose
to enhance a store with applyMiddleware
and a few developer tools from the redux-devtools package.
import { createStore, applyMiddleware, compose } from 'redux'
import thunk from 'redux-thunk'
import DevTools from './containers/DevTools'
import reducer from '../reducers'
const store = createStore(
reducer,
compose(applyMiddleware(thunk), DevTools.instrument())
)
Tips
- All
compose
does is let you write deeply nested function transformations without the rightward drift of the code. Don't give it too much credit!