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

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

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

Dec 23, 2024 am 06:52 AM

Mastering Redux Toolkit: Simplify State Management in Your React App

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

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

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


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

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


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

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

1. configureStore

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

:

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

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

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

2. createSlice

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

:

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ù)に基づいて アクション クリエーターアクション タイプ を自動(dòng)的に生成します。

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 は、データのコレクション (リストや配列など) の操作を簡(jiǎn)素化し、データの追加、更新、削除などのエンティティの管理を容易にします。

3. Redux ツールキットの利點(diǎn)

1.定型文を減らす

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

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

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

3.開(kāi)発者エクスペリエンスの向上

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

4.簡(jiǎn)略化された非同期ロジック

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

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

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


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 を使用するプロセスを簡(jiǎn)素化します。 RTK を使用することで、開(kāi)発者は Redux 構(gòu)成の複雑さを気にすることなく、アプリケーションのコア ロジックに集中できます。

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


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

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JavaScript vs. Java:どの言語(yǔ)を?qū)Wぶべきですか? JavaScript vs. Java:どの言語(yǔ)を?qū)Wぶべきですか? Jun 10, 2025 am 12:05 AM

JavaScriptisidealforwebdevelopment,whileJavasuitslarge-scaleapplicationsandAndroiddevelopment.1)JavaScriptexcelsincreatinginteractivewebexperiencesandfull-stackdevelopmentwithNode.js.2)Javaisrobustforenterprisesoftwareandbackendsystems,offeringstrong

JavaScriptで使用するコメントシンボル:明確な説明 JavaScriptで使用するコメントシンボル:明確な説明 Jun 12, 2025 am 10:27 AM

JavaScriptでは、シングルラインコメント(//)またはマルチラインコメント(//)を選択することは、コメントの目的とプロジェクトの要件に依存します。 2。詳細(xì)なドキュメントには、マルチラインコメントを使用します。 3。コメントスタイルの一貫性を維持します。 4。過(guò)剰な承認(rèn)を避けます。 5.コメントがコードと同期して更新されていることを確認(rèn)してください。適切な注釈スタイルを選択すると、コードの読みやすさと保守性を向上させることができます。

JavaScriptの究極のガイドコメント:コードの明確さを強(qiáng)化します JavaScriptの究極のガイドコメント:コードの明確さを強(qiáng)化します Jun 11, 2025 am 12:04 AM

はい、javascriptcommentsは不必要に使用されています。

Java vs. JavaScript:混亂を解消します Java vs. JavaScript:混亂を解消します Jun 20, 2025 am 12:27 AM

JavaとJavaScriptは異なるプログラミング言語(yǔ)であり、それぞれ異なるアプリケーションシナリオに適しています。 Javaは大規(guī)模なエンタープライズおよびモバイルアプリケーション開(kāi)発に使用されますが、JavaScriptは主にWebページ開(kāi)発に使用されます。

JavaScriptコメント:短い説明 JavaScriptコメント:短い説明 Jun 19, 2025 am 12:40 AM

JavaScriptcommentsEareEssentialential-formaining、およびGuidingCodeexecution.1)single-linecommentseared forquickexplanations.2)多LinecommentsexplaincomplexlogiCorprovidededocumentation.3)clarifyspartsofcode.bestpractic

JavaScriptのマスターコメント:包括的なガイド JavaScriptのマスターコメント:包括的なガイド Jun 14, 2025 am 12:11 AM

ContureCrucialInjavascript formantaining andFosteringCollaboration.1)TheypindeBugging、Onboarding、およびUnderstandingCodeevolution.2)usesingle-linecomments for quickexplanations andmulti-linecomments fordeTeTaileddespransions.3)BestPractsinclud

JavaScriptデータ型:ディープダイビング JavaScriptデータ型:ディープダイビング Jun 13, 2025 am 12:10 AM

javascripthasseveralprimitivedatypes:number、string、boolean、undefined、null、symbol、andbigint、andnon-primitiveTypeslike objectandarray

JavaScript vs. Java:開(kāi)発者向けの包括的な比較 JavaScript vs. Java:開(kāi)発者向けの包括的な比較 Jun 20, 2025 am 12:21 AM

javascriptispreferredforwebdevelopment、whilejavaisbetterforlge-scalebackendsystemsandroidapps.1)javascriptexcelsininintingtivewebexperiences withitsdynAmicnature anddommanipulation.2)javaofferstruntypyping-dobject-reientedpeatures

See all articles