How Use_Redux

2327 ワード

createStore

  • ストアを作成する関数
  • 反応項目
  • 店舗を作成
    import { createStore } from 'redux';

    認可管理のステータスの定義

    const initialState = {
      counter: 0,
      text: '',
      list: []
    };

    アクションの種類

  • 動作タイプは主に大文字で
  • と書く.
  • 動作生成関数は主にCamelCaseが作成する
  • である.
  • 動作対象需要タイプ値
  • function increase() {
      return {
        type: INCREASE 
      };
    }

    矢印関数

  • 動作内では、タイプに加えて、追加フィールド
  • を任意に追加することができる.
    const decrease = () => ({
      type: DECREASE
    });
    
    const changeText = text => ({
      type: CHANGE_TEXT,
      text // 액션안에는 type 외에 추가적인 필드를 마음대로 넣을 수 있습니다.
    });
    
    const addToList = item => ({
      type: ADD_TO_LIST,
      item
    });

    Reduserの作成


    参照
  • ビットアクション作成関数を使用して作成するオブジェクト
  • .
  • 新しい状態を作成する関数
  • 注意
  • :リード書では必ず不変性
  • を維持しなければならない.
    function reducer(state = initialState, action) {
      // state 의 초깃값을 initialState 로 지정했습니다.
      switch (action.type) {
        case INCREASE:
          return {
            ...state,
            counter: state.counter + 1
          };
        case DECREASE:
          return {
            ...state,
            counter: state.counter - 1
          };
        case CHANGE_TEXT:
          return {
            ...state,
            text: action.text
          };
        case ADD_TO_LIST:
          return {
            ...state,
            list: state.list.concat(action.item)
          };
        default:
          return state;
      }
    }

    ショップの作成

  • 復帰点内の状態は、動作の派遣に伴って
  • 更新.
  • listenerという関数を作成し、冗長状態が変化するたびにコンソールに状態を出力する
  • を処理します.
  • の動作が派遣されるたびに、状態は
  • に変化する.
  • に従ってlistener関数
  • を呼び出す
  • 開発者ツール確認
  • const store = createStore(reducer);
    
    console.log(store.getState()); // 현재 store 안에 들어있는 상태를 조회
    
    // 스토어안에 들어있는 상태가 바뀔 때 마다 호출되는 listener 함수
    const listener = () => {
      const state = store.getState();
      console.log(state);
    };
    
    const unsubscribe = store.subscribe(listener);
    // 구독을 해제하고 싶을 때는 unsubscribe() 를 호출하면 됩니다.
    
    // 액션들을 디스패치 해봅시다.
    store.dispatch(increase());
    store.dispatch(decrease());
    store.dispatch(changeText('안녕하세요'));
    store.dispatch(addToList({ id: 1, text: '와우' }));