みなさん、こんにちは!
今日は初心者向けにReact-Reduxのチュートリアルをご紹介します。
ハンズオン形式で進めていくので、一緒に手を動かしながら学んでいきましょう!
では、さっそく始めていきましょう!
まずは、React-Reduxについて簡単に解説します。
React-Reduxは、Reactアプリケーションで状態管理を行うためのライブラリです。
Reduxを使用することで、アプリケーション全体でデータを一元管理でき、コンポーネント間でのデータのやり取りがスムーズになります。
それでは、まずは環境構築を行いましょう。
以下のコマンドで、Reactアプリケーションを作成します。
npx create-react-app react-redux-tutorial
次に、必要なパッケージをインストールしましょう。
cd react-redux-tutorial
npm install redux react-redux
これで環境構築が完了しました!
それでは、Reduxの基本概念について詳しく解説します。
Reduxでは、以下の3つの要素があります。
アプリケーションの状態を管理する場所です。
Storeはアプリケーション内で唯一のものでアプリケーションの状態を持っています。
また、StoreはReducerを使って状態を更新します。
アクションに応じて状態を更新する純粋関数です。
Reducerは現在の状態とアクションを引数として受け取り、新しい状態を返します。
Reducerは副作用を持たず、同じ入力に対して常に同じ出力を返す必要があります。
何らかのイベントを表すオブジェクトで type
と payload
を持ちます。
type
はActionの種類を示す文字列で、payload
はアクションに関連するデータを持ちます。
Actionはアプリケーションで何が起こったかを示す情報を持っています。
それでは、これらの概念を使って簡単なカウンターアプリケーションを作成していきましょう!
まずは、Reducerを作成します。srcフォルダ内に reducers
フォルダを作成し、その中に counter.js
ファイルを作成しましょう。
const initialState = {
count: 0
}
const counter = (state = initialState, action) => {
switch (action.type) {
case 'INCREMENT':
return { ...state, count: state.count + 1 }
case 'DECREMENT':
return { ...state, count: state.count - 1 }
default:
return state
}
}
export default counter
上記のコードでは、カウンターの初期状態と INCREMENT
、DECREMENT
の2つのアクションに対する状態の更新を定義しています。
INCREMENT
アクションが発生した場合はカウントを1増やし、DECREMENT
アクションが発生した場合はカウントを1減らすように状態を更新しています。
次はStoreを作成します。
srcフォルダ内に store.js
ファイルを作成しましょう。
import { createStore } from 'redux'
import counter from './reducers/counter'
const store = createStore(counter)
export default store
上記のコードでは、先ほど作成したcounter Reducerを使って、Storeを作成しています。
それでは、ReactアプリケーションとReduxを連携させましょう!
まずは、srcフォルダ内の index.js
ファイルを編集します。
import React from 'react'
import ReactDOM from 'react-dom'
import { Provider } from 'react-redux'
import store from './store'
import App from './App'
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
)
上記のコードでは、react-reduxのProviderコンポーネントを使って、Reactアプリケーション全体でStoreを使えるようにしています。
最後に、カウンターアプリケーションを作成しましょう。
srcフォルダ内の App.js
ファイルを以下のように編集します。
import React from 'react'
import { useSelector, useDispatch } from 'react-redux'
function App() {
const count = useSelector((state) => state.count)
const dispatch = useDispatch()
const increment = () => dispatch({ type: 'INCREMENT' })
const decrement = () => dispatch({ type: 'DECREMENT' })
return (
<div>
<h1>カウント: {count}</h1>
<button onClick={increment}>+1</button>
<button onClick={decrement}>-1</button>
</div>
)
}
export default App
上記のコードでは、useSelector
と useDispatch
を使って、Reduxの状態とアクションをReactコンポーネントで扱っています。
increment関数とdecrement関数がそれぞれ INCREMENT
アクションと DECREMENT
アクションを発行しています。
これでカウンターアプリケーションの実装が完了しました!
それでは、カウンターアプリケーションの動作確認を行いましょう。
ターミナルで以下のコマンドを実行して、アプリケーションを起動します。
npm start
ブラウザで
http://localhost:3000 が自動的に開かれ、カウント: 0
と表示された以下の画面が表示されるはずです。
+1ボタンと-1ボタンをクリックして、カウントが正しく増減することを確認しましょう。
お疲れ様でした!
今回のチュートリアルでは、React-Reduxの基本的な使い方を学びました。
これからもっと複雑なアプリケーションを作成する際にも、Reduxをうまく活用して状態管理を行っていきましょう!
TypeScriptの短絡評価の使い方「&&」「||」「??」の解説
TypeScriptのタイマー関数setTimeoutとsetIntervalの使い方
TypeScriptの多次元配列の使い方についてわかりやすく解説
TypeScriptでのタプルの使い方と実践テクニックを解説
TypeScriptのimport typeをわかりやすく解説
TypeScriptの配列やオブジェクトのソート完全ガイド
TypeScriptコメントアウトの使い方 完全ガイド
TypeScriptのオブジェクトとプロパティの存在チェック完全ガイド
TypeScriptで即時関数を使う方法を解説!基本から実践的な使い方まで