2016-10-14 7 views
2

저는 redux를 처음 사용하고 redux-actions를 보거나 감속기에서 switch 문을 사용했습니다. switch 문을 사용하는 것에 반대하지는 않지만, 액션 메소드를 호출하는 것이 더 쉽지 않은가? 여기 Redux - 스위치 대신 감속기에서 동작 객체 방법 사용

내가

import actions from './actions' 

const reducer = (state = {}, action) => { 
    if (actions[action.type]) return Object.assign({}, 
     state, actions[action.type](action) 
    ); 
    return state; 
} 

난 그냥 내 첫 번째 감속기과 행동에 이것을 테스트했습니다 생각하고 무엇이고, 그것은 작동하지만, 스위치 유형이를 왜 내가 궁금하네요 아주 분명한 것 같다 선택한 길?

+0

1. 귀하의 행동은 기존 상태 개체를 인수로 받아야합니까? 2. 스위치 케이스는 단순한 문체 결정입니다. 감속기 함수가 새 상태 객체를 반환하는 한 아무 것도 할 수 있습니다. 무엇이 더 청결한 지 느낀다 : – iamnat

답변

1

일부 관찰 :

  1. 은 "행동"이러한 외부 함수를 참조하지 마십시오. 그들은 행동이 아닙니다. 그들은 실제로 감속기 그 자체입니다.
  2. 레 듀서이기 때문에 상태 객체를 전달해야합니다. 종종 현재 상태에 포함 된 정보와 작업 객체에 포함 된 정보를 활용할 필요가 있습니다.

그렇지 않으면 적절한 접근 방식 인 것 같습니다.

+1

'switch'와 함수를 사용한 객체 (hash)의 차이는 무시할 만하다. 그러나 Object.assign은 상태 형태를 객체로 잠그고 삭제를 허용하지 않습니다. 일반적인 해결책으로는 불가능합니다. – DDS

+1

사실입니다. 그러나 나는 항상 국가 형태를 일관되게 유지합니다. 만약 감속기가 임의로 상태 형태를 바꾸고 있다면 앱의 나머지 부분에서 문제가 될 수 있습니다. –

+0

때로는 배열이 객체보다 적합 할 때도 있습니다. – DDS

2

스위치 명령문은 분명 가장 일반적인 방법이지만 조회 테이블도 일반적으로 사용됩니다. 원할 경우 일반 if/then 조건을 사용할 수도 있습니다. 궁극적으로, 귀하의 감속기를 작성하는 방법은 귀하에게 달려 있습니다.

참고 :이 항목은 Redux FAQ, FAQ: Reducers 섹션에서 다룹니다. 새로운 "Structuring Reducers" 방법 섹션을 읽어 볼 수도 있습니다.