🐣 [Rexux] ざっと流れの整理
作成日: 2022/03/05
3

https://medium.com/hootsuite-engineering/stateless-components-with-react-f38f8a888e6e

  1. ストアの初期状態を定義
const initialState = {
  color: "black"
};
  1. ストアを更新するためのReduxアクションを定義
const CHANGE_COLOR = "CHANGE_COLOR";

const changeColor = color => {
  return { type: CHANGE_COLOR, color: color };
};
  1. Reduxレデューサー(※)を定義
const changeColorReducer = (state = initialState, action) => {
  switch (action.type) {
    case CHANGE_COLOR:
      return Object.assign({}, state, {
        color: action.color
      });
    default:
      return state;
  }
};
  1. createStoreでStoreを初期化
const store = createStore(changeColorReducer, initialState);

※レデューサーは純粋関数であること
純粋関数とは
https://tech.recruit-mp.co.jp/front-end/post-15837/

結果は引数として与えられた値からのみ計算される
関数の外部で変更される可能性のあるデータに一切依存しない
関数実行部の外側に存在する何かの状態を一切変更しない

let val: number = 0;

// 純粋関数
function inc(x: number): number {
  return x + 1;
}

// 純粋関数
function double(x: number): number {
  return x * 2;
}

// 不純な関数
// 結果が外部で変更される可能性のあるデータに依存
function getGlobalVal(): number {
  return val;
}

// 不純な関数
// 外側に存在する変数の状態を変更してる
function updateVal(x: number) {
  val = x;
}

制作会社でフロントのコーディングやWordpressのテーマ開発をしてます。 本命はJavascriptです😋 目指せフロントエンドエンジニア👊