react-redux
■getting started with react redux
reactでreduxを使用するためのプラグイン
stateの取得(get_state)
stateの更新(dispatch(action))
◾️ReduxとUI layerを結びつける手順
Redux storeを作成する
updatesを登録する
subscriptionの内部
現在のstore stateを取得する
UI表示に必要なデータを抜き出す
UIを更新する
初期値が必要な場合はUIに初期値を渡してください
Redux actionをdispatchすることによってUIの入力を反映させます。
このロジックを手書きをすることも可能ですが、とても繰り返しが多くなってしまいます。
UIパフォーマンスを最適化することは複雑なロジックが必須です。
◾️npxを使用してサンプルを作成する(typescriptを使用する)
npx create-react-app my-app --template redux-typescript
◾️react-reduxを追加する
yarn add react-redux
index.tsxを確認してください。
React Reduxには<Providor />コンポーネントが含まれています。
React ReduxではuseSelectorとuseDispatchのメソッドがあります。
useSelectorはstoreから値を読み取ったり、更新を行います。
useDispatchはactionにdispatchをするためのメソッドです。
Counter.tsxに上記のメソッドの実用例をあります。
◾️Why Use React Redux?
Redux自体はスタンドアローンのライブラリで、React, Angular, Vue, Ember, vanilla JSなど、あらゆるUIレイヤーやフレームワークで使用することができます。ReduxとReactは一緒に使われていることが多いですが、それぞれ独立しています。
もし、あなたが何からしらのUI frameworkと一緒にReduxを使用している場合、あなたはUIコードから直接やりとりするのではなく、ReduxとUI frameworkを結ぶつけるためにUI bindingライブラリを使用します。
React ReduxはReactのための公式Redux UI bindigライブラリです。ReduxとReactを一緒に使用する場合は、二つを結ぶつけるためにReact Reduxを使用します。
◾️React Redux Quick Start
# configureStoreからstoreを作成する
import { configureStore } from '@reduxjs/toolkit'
・Provide the Redux Store to React
# React ReduxのProviderからReact componentsに連携する
# Providerにpropとしてstoreを渡す。
<Provider store={store}>
<App />
</Provider>
・Create a Redux State Slice
import { createSlice } from '@reduxjs/toolkit’
export const conterSlice = createSlice({
# Sliceの名前
name: 'counter',
# 初期値を定義する
initialState: {
value: 0,
},
# 一つ以上のreducerを設定する
reducers: {
increment: (state) => {
state.value += 1
},
}
# Action creatorsはそれぞれのreducersからactionを生成します。
export const { increment } = counterSlice.actions
# reducerをexportする
export default conterSlice.reducer
・Add Slice Reducers to the Store
counter sliceからreducer functionをインポートしてstoreに追加する。
storeを更新の定義をreducerでします。
import { configureStore } from '@reduxjs/toolkit’
import counterReducer from '../features/counter/counterSlice'
# storeにreducerを定義する。
export default configureStore({
reducer: {
counter: counterReducer,
}
})
・Use Redux State and Actions in React Components
React Redux hooksを使用することでReact componentsとRedux storeを連携します。
useSelectorを使用してstoreからデータを読み込む、useDispatchを使用してactionをdispatch
します。
import React from 'react'
import { useSelector, useDispatch } from 'react-redux'
import { decrement, increment } from './counterSlice'
import styles from './Counter.module.css'
export function Counter() {
const count = useSelector((state) => state.counter.value)
const dispatch = useDispatch()
return (
<div>
<button
onClick={() => dispatch(incremetn()) }
>
Incerment
</button>
</div>
}
SUMMARY
create a Redux store with configureStore
configureStoreはreducerを受け取ります。
configureStoreは自動でstoreを設定します。
provide the redux store to the react application components
<App />の周りに<Provider>を置きます。
<Provider store={store}>としてRedux storeを渡す
create a redux slice reducer with createSlice
名前と初期値とreducer関数と一緒にcreateSliceを呼ぶ
reducer関数はImmerを使用してstateを更新します。
生成したreducerとactionをexportします。
use the react redux useSelector/useDispatch hooks in react components
useSelectorを使用してstoreからデータを読み込む。
useDispatchを使用してactionをdispatchします。
この記事が気に入ったらサポートをしてみませんか?