// 現在の state と受け取った action の内容から// 新しい state を作成し、// state を更新するための関数constreducer= (state =0, action) => {switch (action.type) {case"PLUS":return state +action.payload.num;case"MINUS":return state -action.payload.num;default:return state; }};exportdefault reducer;
App.js
メインのコンポーネント
connect で redux の store と React Component を結びつける
state, dispatch がコンポーネントの props に渡される
import React from"react";import { connect } from"react-redux";// connect されることで、// props に number, plus, minus が入ってくるconstApp= ({ number, plus, minus }) => ( <div> <h2>App {number}</h2> <buttononClick={() => {plus(10); }} > + 10 </button> <buttononClick={() => {minus(10); }} > - 10 </button> </div>);// number という名前で state をコンポーネントに渡すconstmapStateToProps= state => {return { number: state };};// plus と minus という名前で// action を dispatch するメソッドをコンポーネントに渡すconstmapDispatchToProps= dispatch => {return {plus: num => {dispatch({ type:"PLUS", payload: { num: num } }); },minus: num => {dispatch({ type:"MINUS", payload: { num: num } }); } };};// connect で App コンポーネントに、// 「state」 と 「action を dispatchするメソッド」を渡すexportdefaultconnect(mapStateToProps, mapDispatchToProps)(App);