国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ ウェブフロントエンド jsチュートリアル Redux ツールキットのマスタリング: React アプリの狀態(tài)管理を簡素化する

Redux ツールキットのマスタリング: React アプリの狀態(tài)管理を簡素化する

Dec 23, 2024 am 06:52 AM

Mastering Redux Toolkit: Simplify State Management in Your React App

Redux ツールキット: React での狀態(tài)管理を簡素化する

Redux Toolkit は、アプリケーションで Redux をセットアップするプロセスを簡素化する、獨自の意見を持つ強(qiáng)力な公式ライブラリです。 Redux は非常に強(qiáng)力ですが、狀態(tài)管理、アクションの作成、リデューサーを処理するために多くの定型コードが必要になる場合があります。 Redux Toolkit (RTK) は、一般的なタスクを簡素化する一連のユーティリティ関數(shù)を提供することで、Redux 開発をより簡単かつ効率的に行うように設(shè)計されています。

Redux Toolkit を使用すると、より簡潔かつ體系的にストアを構(gòu)成し、リデューサーを作成し、アクションを定義できます。また、開発者がよくある間違いや定型コードを回避するのに役立つデフォルト設(shè)定もいくつか含まれています。


1. Redux ツールキットとは何ですか?

Redux Toolkit は、より構(gòu)造化され、簡潔で、ユーザーフレンドリーな方法で Redux ロジックを作成するための公式の推奨ライブラリです。不変狀態(tài)の更新を自動的に処理したり、アクションクリエーターとリデューサーを簡素化するなど、Redux セットアップの複雑さを軽減するユーティリティを提供することで、反復(fù)的なコードの必要性を排除します。


2. Redux Toolkit のコア機(jī)能

Redux Toolkit は、Redux の使用を効率化するためのいくつかの組み込み機(jī)能とユーティリティを提供します。

1. configureStore

configureStore は、非同期アクション用の redux-thunk などの重要なミドルウェアを自動的に追加し、デバッグ用に Redux DevTools をセットアップすることにより、ストア構(gòu)成を簡素化します。

:

import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';

const store = configureStore({
  reducer: {
    counter: counterReducer,
  },
});

export default store;
  • configureStore はストアの作成を処理するため、createStore 関數(shù)と比較してより簡単かつ標(biāo)準(zhǔn)化されています。

2. createSlice

createSlice は、Redux 狀態(tài)の一部を表し、リデューサーとアクションの両方を含む Redux スライスの作成を簡素化するユーティリティです。

:

import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    increment: (state) => {
      state.value += 1; // Direct mutation allowed due to immer.js under the hood
    },
    decrement: (state) => {
      state.value -= 1;
    },
    incrementByAmount: (state, action) => {
      state.value += action.payload;
    }
  }
});

export const { increment, decrement, incrementByAmount } = counterSlice.actions;
export default counterSlice.reducer;
  • createSlice は、定義したリデューサー関數(shù)に基づいて アクション クリエーターアクション タイプ を自動的に生成します。

3. createAsyncThunk

createAsyncThunk は、API からデータを取得して Redux 狀態(tài)に統(tǒng)合するなど、非同期ロジックを処理するためのツールです。非同期フローを管理するために、一連のアクション作成者 (保留中、履行済み、拒否された狀態(tài)) を生成します。

:

import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';

const store = configureStore({
  reducer: {
    counter: counterReducer,
  },
});

export default store;
  • createAsyncThunk は、Redux での非同期リクエストをクリーンでわかりやすい方法で管理するのに役立ちます。

4. createEntityAdapter

createEntityAdapter は、Redux で正規(guī)化されたデータを管理するユーティリティです。アイテムのリストなどのデータのコレクションを効率的に処理するのに役立ちます。

:

import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    increment: (state) => {
      state.value += 1; // Direct mutation allowed due to immer.js under the hood
    },
    decrement: (state) => {
      state.value -= 1;
    },
    incrementByAmount: (state, action) => {
      state.value += action.payload;
    }
  }
});

export const { increment, decrement, incrementByAmount } = counterSlice.actions;
export default counterSlice.reducer;
  • createEntityAdapter は、データのコレクション (リストや配列など) の操作を簡素化し、データの追加、更新、削除などのエンティティの管理を容易にします。

3. Redux ツールキットの利點

1.定型文を減らす

RTK は、Redux のセットアップに必要な定型コードの量を大幅に削減します。アクション タイプ、アクション クリエーター、リデューサーを手動で記述する代わりに、createSlice を使用してすべてを自動的に生成できるようになりました。

2.不変の更新 (Immer.js 経由)

RTK は內(nèi)部で Immer.js を使用します。これにより、リデューサー內(nèi)で「変異型」コードを作成できます。ただし、Immer は、狀態(tài)のコピーを自動的に作成し、それらに突然変異を適用することで、狀態(tài)が不変のままであることを保証します。

3.開発者エクスペリエンスの向上

redux-thunk などのミドルウェアを自動的に構(gòu)成し、Redux DevTools と統(tǒng)合することにより、Redux Toolkit は Redux の狀態(tài)のデバッグと監(jiān)視を容易にします。 RTK はタイプ セーフを強(qiáng)力にサポートしているため、TypeScript などのツールも簡単に使用できます。

4.簡略化された非同期ロジック

createAsyncThunk 関數(shù)は、複雑な非同期ロジックの管理に役立ち、それを Redux 狀態(tài)にシームレスに統(tǒng)合して、非同期操作の管理の複雑さを軽減します。

5. createEntityAdapter でデータを正規(guī)化する

RTK は、正規(guī)化されたデータを処理するための createEntityAdapter などのユーティリティを提供します。これは、Redux で大規(guī)模なデータセット (ユーザー、製品などのリストなど) を管理する場合に特に便利です。


4. React アプリで Redux ツールキットをセットアップする

これは、React アプリで Redux Toolkit をセットアップするための基本ガイドです。

ステップ 1: Redux Toolkit と React-Redux をインストールする

import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';

export const fetchData = createAsyncThunk(
  'data/fetchData', 
  async (url) => {
    const response = await fetch(url);
    return response.json();
  }
);

const dataSlice = createSlice({
  name: 'data',
  initialState: { items: [], status: 'idle' },
  reducers: {},
  extraReducers: (builder) => {
    builder
      .addCase(fetchData.pending, (state) => {
        state.status = 'loading';
      })
      .addCase(fetchData.fulfilled, (state, action) => {
        state.status = 'succeeded';
        state.items = action.payload;
      })
      .addCase(fetchData.rejected, (state) => {
        state.status = 'failed';
      });
  }
});

export default dataSlice.reducer;

ステップ 2: スライスとリデューサを作成する

createSlice を使用して Redux スライスを定義します。これには、特定の狀態(tài)部分のアクションとリデューサーの両方が含まれます。

import { createEntityAdapter, createSlice } from '@reduxjs/toolkit';

const usersAdapter = createEntityAdapter();

const usersSlice = createSlice({
  name: 'users',
  initialState: usersAdapter.getInitialState(),
  reducers: {
    addUser: usersAdapter.addOne,
    removeUser: usersAdapter.removeOne,
  }
});

export const { addUser, removeUser } = usersSlice.actions;
export default usersSlice.reducer;

ステップ 3: ストアを構(gòu)成する

次に、configureStore を使用して Redux ストアを設(shè)定します。

import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';

const store = configureStore({
  reducer: {
    counter: counterReducer,
  },
});

export default store;

ステップ 4: React コンポーネントで Redux を使用する

react-redux の Provider コンポーネントでアプリをラップして、アプリケーション全體で Redux ストアを利用できるようにします。

import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    increment: (state) => {
      state.value += 1; // Direct mutation allowed due to immer.js under the hood
    },
    decrement: (state) => {
      state.value -= 1;
    },
    incrementByAmount: (state, action) => {
      state.value += action.payload;
    }
  }
});

export const { increment, decrement, incrementByAmount } = counterSlice.actions;
export default counterSlice.reducer;
  • useSelector: Redux 狀態(tài)にアクセスします。
  • useDispatch: 狀態(tài)を変更するアクションをディスパッチします。

5.結(jié)論

Redux Toolkit は、ボイラープレート コードを削除し、createSlice、createAsyncThunk、configureStore などのユーティリティ関數(shù)を提供することで、Redux を使用するプロセスを簡素化します。 RTK を使用することで、開発者は Redux 構(gòu)成の複雑さを気にすることなく、アプリケーションのコア ロジックに集中できます。

RTK を使用すると、同期狀態(tài)と非同期狀態(tài)の両方をより効率的かつ保守しやすい方法で管理できるため、大規(guī)模な React アプリケーションに最適です。


以上がRedux ツールキットのマスタリング: React アプリの狀態(tài)管理を簡素化するの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

node.jsでHTTPリクエストを作成する方法は? node.jsでHTTPリクエストを作成する方法は? Jul 13, 2025 am 02:18 AM

node.jsでHTTPリクエストを開始するには、組み込みモジュール、axios、およびnode-fetchを使用する3つの一般的な方法があります。 1.依存関係のない內(nèi)蔵http/httpsモジュールを使用します。これは基本的なシナリオに適していますが、https.get()を使用してデータを取得したり、.write()を介してPOSTリクエストを送信するなど、データステッチとエラーモニタリングの手動処理が必要です。 2.Axiosは、約束に基づいたサードパーティライブラリです。簡潔な構(gòu)文と強(qiáng)力な機(jī)能を備えており、非同期/待ち聲、自動JSON変換、インターセプターなどをサポートします。非同期リクエスト操作を簡素化することをお勧めします。 3.Node-Fetchは、約束と単純な構(gòu)文に基づいて、ブラウザフェッチに似たスタイルを提供します

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 JavaScript Timeオブジェクト、誰かがEACTEXE、Google Chromeなどのより高速なWebサイトを構(gòu)築します。 Jul 08, 2025 pm 02:27 PM

こんにちは、JavaScript開発者!今週のJavaScriptニュースへようこそ!今週は、DenoとのOracleの商標(biāo)紛爭、新しいJavaScript Timeオブジェクトがブラウザ、Google Chromeアップデート、およびいくつかの強(qiáng)力な開発ツールによってサポートされています。始めましょう! 「JavaScript」の商標(biāo)を登録しようとするDeno Oracleの試みとのOracleの商標(biāo)紛爭は、論爭を引き起こしました。 Node.jsとDenoの作成者であるRyan Dahlは、商標(biāo)をキャンセルするために請願書を提出しました。

ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ ハンドリングの約束:javascriptのチェーン、エラー処理、および約束の組み合わせ Jul 08, 2025 am 02:40 AM

約束は、JavaScriptで非同期操作を処理するためのコアメカニズムです。チェーンコール、エラー処理、コンビナーの理解は、アプリケーションをマスターするための鍵です。 1.チェーンコールは、.then()を通じて新しい約束を返し、非同期プロセスの連結(jié)を?qū)g現(xiàn)します。それぞれ.then()は以前の結(jié)果を受け取り、値または約束を返すことができます。 2。エラー処理は、.catch()を使用して例外をキャッチしてサイレント障害を回避し、キャッチのデフォルト値を返すためにプロセスを継続する必要があります。 3。promise.all()などの組み合わせ(すべての成功後にのみ成功しました)、promise.race()(最初の完了が返されます)、promise.allsettled()(すべての完了を待っています)

キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? キャッシュAPIとは何ですか?また、サービスワーカーでどのように使用されますか? Jul 08, 2025 am 02:43 AM

Cacheapiは、ブラウザからネットワークリクエストをキャッシュするツールです。これは、ウェブサイトのパフォーマンスとオフラインエクスペリエンスを改善するために、サービスワーカーと併用することがよくあります。 1.開発者は、スクリプト、スタイルシート、寫真などのリソースを手動で保存できるようにします。 2。要求に応じてキャッシュ応答と一致させることができます。 3.特定のキャッシュの削除またはキャッシュ全體のクリアをサポートします。 4.フェッチイベントを聞いているサービスワーカーを介して、キャッシュの優(yōu)先順位またはネットワークの優(yōu)先戦略を?qū)g裝できます。 5.オフラインサポート、繰り返しのアクセス速度の高速化、主要なリソースのプリロード、バックグラウンドアップデートコンテンツによく使用されます。 6.それを使用する場合、キャッシュバージョンの制御、ストレージ制限、およびHTTPキャッシングメカニズムとの違いに注意する必要があります。

JSラウンドアップ:JavaScriptイベントループに深く潛り込む JSラウンドアップ:JavaScriptイベントループに深く潛り込む Jul 08, 2025 am 02:24 AM

JavaScriptのイベントループは、コールスタック、WebAPIS、およびタスクキューを調(diào)整することにより、非同期操作を管理します。 1.コールスタックは同期コードを?qū)g行し、非同期タスクに遭遇すると、処理のためにWebAPIに引き渡されます。 2。WebAPIがバックグラウンドでタスクを完了した後、コールバックを?qū)潖辘工毳濠`(マクロタスクまたはマイクロタスク)に入れます。 3.イベントループは、コールスタックが空であるかどうかをチェックします??栅螆龊稀ⅴ畅`ルバックはキューから取り出され、実行のためにコールスタックに押し込まれます。 4.マイクロタスク(Promise.thenなど)は、マクロタスク(SettimeOutなど)より優(yōu)先されます。 5.イベントループを理解するには、メインスレッドのブロックを避け、コード実行順序を最適化するのに役立ちます。

JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 JavaScript DOMイベントでのイベントの泡立ちとキャプチャの理解 Jul 08, 2025 am 02:36 AM

イベントの泡は、ターゲット要素から祖先ノードに外側(cè)に伝播し、イベントキャプチャは外側(cè)の層からターゲット要素に內(nèi)側(cè)に伝播します。 1。イベントバブル:子要素をクリックした後、イベントは親要素のリスナーを上向きにトリガーします。たとえば、ボタンをクリックした後、最初に保育を出してから、親クリックしました。 2。イベントキャプチャ:3番目のパラメーターをtrueに設(shè)定して、リスナーが[親子要素のキャプチャリスナー]をクリックする前に[親要素のキャプチャリスナーをトリガーするなど、キャプチャステージで実行されるようにします。 3.実用的な用途には、子どもの要素イベントの統(tǒng)一された管理、傍受前処理、パフォーマンスの最適化が含まれます。 4. DOMイベントストリームは、キャプチャ、ターゲット、バブルの3つの段階に分割され、デフォルトのリスナーはバブルステージで実行されます。

マップとフィルターを超えて高次関數(shù)のJSラウンドアップ マップとフィルターを超えて高次関數(shù)のJSラウンドアップ Jul 10, 2025 am 11:41 AM

JavaScriptアレイには、Map and Filterに加えて、他の強(qiáng)力で使用されていない方法があります。 1.還元は、合計するだけでなく、カウント、グループ、フラットンアレイ、新しい構(gòu)造を構(gòu)築することもできます。 2。FindおよびFindIndexは、個々の要素またはインデックスを見つけるために使用されます。 3.一部とすべてが條件が存在するか、すべての出會いかを判斷するために使用されます。 4.ソートはソートできますが、元の配列を変更します。 5.副作用を避けるために、それを使用するときにアレイをコピーすることに注意してください。これらの方法により、コードがより簡潔で効率的になります。

See all articles