2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Reduxの導入 - 簡単なサンプル -

Last updated at Posted at 2018-06-18

Reduxのインストール

npm install --save redux

Reduxの実装

public/index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>sample count app.</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>
src/index.js
// 各種クラス、関数が利用できるようにインポート
import React from 'react';
import { render } from 'react-dom';
import { createStore } from 'redux';

// No.9「No.7」で使用しているActionCreatorを定義
const actionCreator = (count) => ({
    type: ACTION_COUNT_UP,
    payload: {
        count
    }
});

// No.7「No.6」で使用している関数のコンポーネントを定義
function CountApp({ store }) {
    const { count } = store.getState();
    return (
        <div>
            // No.8 以下のbuttonを押下すると、spanタグの中の{count}がインクリメントされるように、イベントの登録をしています。
            <span>{count}</span>
            <button value={ACTION_COUNT_UP} onClick={() => store.dispatch(actionCreator(count))}>Count Up.</button>
        </div>
    );
}

// No.4「No.3」の関数のstateの初期値を定義
const initialState = {
    count: 0
};

// No.5「No.3」で使用しているActionのtypeを定義
const ACTION_COUNT_UP = 'COUNT_UP';

// No.3「No.2」に渡すreducer(stateの更新処理)を定義
function reducer(state = initialState, action) {
    switch (action.type) {
        case ACTION_COUNT_UP:
            return {
                count: ++action.payload.count
            };
        default:
            return state;
    }
}

// No.2「No.1」に渡すstoreを作成
const store = createStore(reducer);

// No.10「No.8」のbuttonが押下されて、「3.」のreducerが実行された際、
//    renderCountApp()が実行されるようにリスナーの登録を行っています。
store.subscribe(() => renderCountApp(store));

// No.6「No.1」で実行している関数を定義
function renderCountApp(store) {
    render(
        <CountApp store={store} />,
        document.getElementById('root')
    );
}

// No.1 全体の表示処理
renderCountApp(store);

※Reactを使っているので、Reactをインストール前提のソースコードです。
 参考:Reactの開発環境構築~Hello,World!

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?