Redux에서 @@INIT로 초기 State를 설정하지 않는 것이 좋습니다.

제목의 엄마입니다.
Redux에서 초기 State에 값을 넣을 때는 @ @INIT을 사용하지 않는 것이 좋습니다.
(나중에 조사하면, 안티 패턴인 것 같다)

아래와 같이 초기 State를 @ @INIT 때때로 건네주도록(듯이) 설정하고 있으면,
Production 상태에서 INIT가 스루되고 올바르게 로드되지 않은 것이 판명.
(덧붙여서 REDUX devtools는 @ INIT를 읽고 있기 때문에 발견에 늦었다.)

改善前
activity.js
const initialState = {
   likeIDs : [],
   hoge:{},
}

function setIdsToState = arr => {
   let a = [];
   if(Array.isArray(arr)){
     arr.map( n=> { a.push(n.id) });
   }
   return a;
}

const activity = (state: Object = initialState, action: any) => {
    switch(action.type){
      case '@@INIT': {
        const ids = setIdsToState(window._a);
      return {
         ...state,
         likeIDs = ids
      }
    }
}

결국 initialState시에 초기치를 건네주도록(듯이) 개수.
改善後
activity.js

const _ids = { likeIDs = setIdsToState(window._a) };

const initialState = {
   ..._ids,
   hoge:{},
}

function setIdsToState = arr => {
   let a = [];
   if(Array.isArray(arr)){
     arr.map( n=> { a.push(n.id) });
   }
   return a;
}


Production 모드로 하지 않으면 눈치채지 못했기 때문에, 초조했다. .

하기 기사 참고가 되었습니다.
htps : // 기주 b. 코 m / 레즈 xjs / 레즈 x / 이스에 s / 186
htps : // m / k y / / ms / 869 Ae b7b403 Ae 7 A 8 fd8 A

좋은 웹페이지 즐겨찾기