Other Exports#

Redux Toolkit exports some of its internal utilities, and re-exports additional functions from other dependencies as well.

nanoid#

An inlined copy of nanoid/nonsecure. Generates a non-cryptographically-secure random ID string. Automatically used by createAsyncThunk for request IDs, but may also be useful for other cases as well.

import { nanoid } from '@reduxjs/toolkit'
console.log(nanoid())
// 'dgPXxUz_6fWIQBD8XmiSy'

Exports from Other Libraries#

createNextState#

The default immutable update function from the immer library, re-exported here as createNextState (also commonly referred to as produce)

current#

The current function from the immer library, which takes a snapshot of the current state of a draft and finalizes it (but without freezing). Current is a great utility to print the current state during debugging, and the output of current can also be safely leaked outside the producer.

original#

The original function from the immer library, which returns the original object. This is particularly useful for referential equality check in reducers.

import { createReducer, createAction, current } from '@reduxjs/toolkit'
interface Todo {
//...
}
const addTodo = createAction<Todo>('addTodo')
const initialState = [] as Todo[]
const todosReducer = createReducer(initialState, (builder) => {
builder.addCase(addTodo, (state, action) => {
state.push(action.payload)
console.log(current(state))
})
})

isDraft#

The isDraft function from the immer library, which checks to see if a given value is a Proxy-wrapped "draft" state.

combineReducers#

Redux's combineReducers, re-exported for convenience. While configureStore calls this internally, you may wish to call it yourself to compose multiple levels of slice reducers.

compose#

Redux's compose. It composes functions from right to left. This is a functional programming utility. You might want to use it to apply several store custom enhancers/ functions in a row.

bindActionCreators#

Redux's bindActionCreators. It wraps action creators with dispatch() so that they dispatch immediately when called.

createStore#

Redux's createStore. You should not need to use this directly.

applyMiddleware#

Redux's applyMiddleware. You should not need to use this directly.