其他导出
Redux Toolkit 导出了一些内部工具,并从其他依赖项重新导出了额外的函数。
nanoid
nanoid/nonsecure
的内联副本。生成非加密安全的随机 ID 字符串。createAsyncThunk
默认使用此项作为请求 ID。在其他情况下也可能有用。
import { nanoid } from '@reduxjs/toolkit'
console.log(nanoid())
// 'dgPXxUz_6fWIQBD8XmiSy'
miniSerializeError
createAsyncThunk
使用的默认错误序列化函数,基于 https://github.com/sindresorhus/serialize-error 。如果其参数是一个对象(如 Error
实例),它返回一个复制了任何列出字段的普通 JS SerializedError
对象。否则,它返回值的字符串形式:{ message: String(value) }
。
export interface SerializedError {
name?: string
message?: string
stack?: string
code?: string
}
export function miniSerializeError(value: any): SerializedError {}
copyWithStructuralSharing
一个实用工具,将两个相似的对象递归地合并在一起,如果值看起来相同,则保留现有的引用。这在内部用于确保重新获取的数据保持使用相同的引用,除非新数据实际上已经改变,以避免不必要的重新渲染。否则,每次重新获取都可能导致整个数据集被替换,所有消费组件都会重新渲染。
如果输入的任何一个不是普通的 JS 对象或数组,将返回新值。
export function copyWithStructuralSharing<T>(oldObj: any, newObj: T): T
export function copyWithStructuralSharing(oldObj: any, newObj: any): any {}
来自其他库的导出
createNextState
来自 immer
库的默认不可变更新函数,重新导出为 createNextState
(也常被称为 produce
)
current
来自 immer
库的 current
函数,它获取草稿的当前状态并完成它(但不冻结)。Current 是在调试过程中打印当前状态的一个很好的工具,current
的输出也可以安全地泄露到生产者之外。
import { createReducer, createAction, current } from '@reduxjs/toolkit'
interface Todo {
//...
}
const addTodo = createAction<Todo>('addTodo')
const initialState = [] satisfies Todo[] as Todo[]
const todosReducer = createReducer(initialState, (builder) => {
builder.addCase(addTodo, (state, action) => {
state.push(action.payload)
console.log(current(state))
})
})
original
来自 immer
库的 original
函数,它返回原始对象。这在 reducer 中进行引用等价性检查时特别有用。
isDraft
来自 immer
库的 isDraft
函数,它检查给定的值是否是 Proxy 包装的 "draft" 状态。
freeze
来自 immer
库的 freeze
函数,它冻结可草稿化的对象。
combineReducers
Redux 的 combineReducers
,为了方便起见重新导出。虽然 configureStore
在内部调用了这个,但你可能希望自己调用它来组合多级的 slice reducers。
compose
Redux 的 compose
。它从右到左组合函数。
这是一个函数式编程实用工具。你可能想用它来连续应用几个 store 自定义增强器/函数。
bindActionCreators
Redux 的 bindActionCreators
。它用 dispatch()
包装 action 创建者,以便它们在被调用时立即分派。
createStore
Redux 的 createStore
。你不应该直接使用这个。
applyMiddleware
Redux 的 applyMiddleware
。你不应该直接使用这个。