TypeScript
counterReducerを作る
出典: React×TypescriptでuseContext使ってReduxライクなState管理をしてみる — counterReducerを作る
const IncrementAction = 'inc' as const;
export const Increment = () => ({type : IncrementAction});
const DecrementAction = 'dec' as const;
export const Decrement = () => ({type : DecrementAction});
export type CounterAction = ReturnType<typeof Increment> | ReturnType<typeof Decrement>
type CounterState = {
count : number
}
export const CounterInitialState : CounterState = {
count : 0
}
export const CounterReducer : React.Reducer<CounterState,CounterAction> = (state = CounterInitialState,actions) =>
{
switch (actions.type) {
case IncrementAction:
return {count : state.count + 1}
case DecrementAction:
return {count : state.count - 1}
default:
return state
}
};
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「counterReducerを作る」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
4 件import React,{createContext, FC, useReducer} from "react"; import {CounterActions, CounterInitialState, CounterReducer} from "./CounterReducer"; type CounterContextState = {未収録
createContextでContextとProviderを作る
#299994aedd3b
type CounterContextState = { count : number, dispatch : React.Dispatch<CounterActions> }未収録
createContextでContextとProviderを作る
#bcf866e4af9f
export const CounterContextProvider : FC = ({children}) => { const [state,dispatch] = useReducer<typeof CounterReducer>(CounterReducer,CounterInitialState); return( <CounterContext.Provider value={{未収録
createContextでContextとProviderを作る
#c5010fb65476
import React, {FC, useContext} from 'react'; import logo from './logo.svg'; import './App.css'; import {CounterContext, CounterContextProvider} from "./Contexts/CounterProvider";未収録
実際useContextで上記で作ったものを使ってみる。
#eeb0f49121db
