其他輸出
Redux Toolkit 輸出一些內部工具程式,並重新輸出其他相依項的其他函式。
nanoid
內嵌 nanoid/nonsecure
的副本。產生非加密安全隨機 ID 字串。createAsyncThunk
預設使用此函式來產生要求 ID。也可能對其他情況有用。
- TypeScript
- JavaScript
import { nanoid } from '@reduxjs/toolkit'
console.log(nanoid())
// 'dgPXxUz_6fWIQBD8XmiSy'
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
的輸出也可以安全地外洩至產生器之外。
- TypeScript
- JavaScript
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))
})
})
import { createReducer, createAction, current } from '@reduxjs/toolkit'
const addTodo = createAction('addTodo')
const initialState = []
const todosReducer = createReducer(initialState, (builder) => {
builder.addCase(addTodo, (state, action) => {
state.push(action.payload)
console.log(current(state))
})
})
original
immer
函式庫 中的 original
函式,它會傳回原始物件。這在還原器中的參照相等性檢查中特別有用。
isDraft
immer
函式庫 中的 isDraft
函式,它會檢查給定的值是否為 Proxy 包裝的「草稿」狀態。
freeze
immer
函式庫 中的 freeze
函式,它會 凍結 可草稿化的物件。
combineReducers
Redux 的 combineReducers
,重新匯出以方便使用。雖然 configureStore
會在內部呼叫這個函式,但你可能希望自己呼叫它來組合多層級的切片 reducer。
compose
Redux 的 compose
。它從右到左組合函式。這是一個函式程式設計工具程式。你可能想要用它來連續套用多個自訂 store 增強器/函式。
bindActionCreators
Redux 的 bindActionCreators
。它用 dispatch()
包裝動作建立器,以便在呼叫時立即進行派送。
createStore
Redux 的 createStore
。你不應該需要直接使用它。
applyMiddleware
Redux 的 applyMiddleware
。你不應該需要直接使用它。