その他のエクスポート
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
https://github.com/sindresorhus/serialize-errorに基づいて、createAsyncThunkで使用されるデフォルトのエラーシリアライズ関数。引数がオブジェクト(Errorインスタンスなど)の場合、リストされているフィールドのいずれかをコピーするプレーンJS SerializedErrorオブジェクトを返します。それ以外の場合、値の文字列化された形式:{ message: String(value) }を返します。
export interface SerializedError {
name?: string
message?: string
stack?: string
code?: string
}
export function miniSerializeError(value: any): SerializedError {}
copyWithStructuralSharing
値が同じに見える場合は既存の参照を保持しながら、2つの類似したオブジェクトを再帰的にマージするユーティリティ。これは、新しいデータが実際に変更されていない限り、再フェッチされたデータが同じ参照を使用し続けるようにするために内部的に使用され、不要な再レンダリングを回避します。そうでなければ、すべての再フェッチは、データセット全体が置き換えられ、すべてのコンシューマコンポーネントが常に再レンダリングされる可能性があります。
入力のいずれかがプレーン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関数。元のオブジェクトを返します。これは、reducerでの参照の等価性チェックに特に役立ちます。
isDraft
immerライブラリのisDraft関数。指定された値がProxyでラップされた「ドラフト」状態かどうかを確認します。
freeze
immerライブラリのfreeze関数。ドラフト可能なオブジェクトをフリーズします。
combineReducers
便宜上再エクスポートされたReduxのcombineReducers。 configureStoreはこれを内部的に呼び出しますが、複数のレベルのスライスreducerを構成するために自分で呼び出すことができます。
compose
Reduxのcompose。関数を右から左に構成します。これは関数型プログラミングユーティリティです。複数のストアカスタムエンハンサー/関数を連続して適用するために使用できます。
bindActionCreators
ReduxのbindActionCreators。アクションクリエイターをdispatch()でラップするため、呼び出されるとすぐにディスパッチされます。
createStore
ReduxのcreateStore。これを直接使用する必要はありません。
applyMiddleware
ReduxのapplyMiddleware。これを直接使用する必要はありません。