その他のエクスポート
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
。これを直接使用する必要はありません。