React でTODOリストを開発しているのですが、
今回は、Reduxを導入してみました。
Redux を導入することで、stateをRedux で管理することができるようになります。
メリットとしては、どのコンポーネントも、このRedux で管理されたstate を参照するようになるので、統一した値を参照することができるようになり、
コンポーネント同士のバケツリレーをする必要がなくなるのですね。
vue.js だったら、vuex ってのを使用しますし、
reactだったら、redux
JSのフレームワークを触るなら、このあたりの知識は必須かなと思っております。
今回は、Reduxにstateを更新できるところまで実装できたらいいかな
ということで、早速実装していく!
index.js
import React from "react"; import { render } from "react-dom"; import { createStore } from "redux"; import App from "./App"; let nextId = 1; //action const addTodo = text => ({ type: "ADD_TODO", id: nextId++, todo: text }); //reducer const reducer = (state = [], action) => { switch (action.type) { case "ADD_TODO": return [ ...state, { id: action.id, todo: action.todo } ]; default: return state; } }; const store = createStore(reducer); //stateに変更があったら参照できる store.subscribe(() => { console.log(store.getState()); }); //dispatch store.dispatch(addTodo("test"));
redux を使用する上で重要なのは、
dispatch, action, reducer の考え方
dispatch はaction を呼ぶ
action はreducer を呼ぶ関数
reducer で、reduxで管理しているstate更新
というようなイメージです。
この役割を理解できれば、
あとは、書き方を覚えるだけかな
初見はめちゃ難しく感じるかもですが、
慣れてくると、けっこうシンプルに理解できるようになる気がします。
実際に実務で使用するまでは、ちゃんと理解することはできなさそうだけど
Created with CodeSandbox. Contribute to TsuyoshiTomozawa/react-todo development by creating an account on GitHub. GitHub - TsuyoshiTomozawa/react-todo: Created with CodeSandbox - GitHub |
次回は、Reduxに管理したstate をブラウザに表示するところまで実装してみようと思います!