다른 감속기의 정보가 필요한 감속기가있는 경우가 있습니다. 그렇지 않으면 내가 제대로 인덱스를 결정할 수 없기 때문에, 나는 함수의 두 번째 줄에 store.getState를 호출 할Redux : reducer 함수에서 store.getState()를 호출하면 그 패턴이 anti입니까?
import * as ActionTypes from '../actions/action_type_constants';
import KeyCode from 'keycode.js/index';
import {store} from "../index";
import {mod} from "../pure_functions";
export function selectedCompletion(state = 0, action) {
if (action.type === ActionTypes.arrowKeyPressed) {
const completionsLength = store.getState().completions.data.length;
if (action.keyCode === KeyCode.UP) {
return mod(state - 1, completionsLength);
} else if (action.keyCode === KeyCode.DOWN) {
return mod(state + 1, completionsLength);
}
}
return state;
}
예를 들어 나는이 감속기 있습니다.
아마도 나는이 리듀서를 리펙토링하여 하나의 커다란 감속기가 될 수 있지만, 가독성을 위해이 옵션을 선호합니다.
감속기에서 store.getState()를 호출하는 패턴을 사용하면 어떻게 든 문제가 발생할지 모르겠습니다.
저는 약간 혼란 스럽습니다. getState가 현재 상태를 기반으로하는 위반을 어떻게 부릅니까? 특히 재 배열 할 수없는 타사 감속기의 사용 사례가 있습니다. –
첫째, "순수한 함수"의 정의는 "입력에만 의존하고 자체의 외부에는 아무것도 수정하거나 영향을주지 않는 함수"입니다. 가져온 저장소를 참조하면 _not_ 순수하다는 의미입니다. 둘째, 감속기를 특정 상점 인스턴스에 연결합니다. 즉, 테스트 또는 여러 매장과 같은 경우에는 작동하지 않습니다. 따라서 대부분의 경우 코드 _may_가 작동하지만 확실히 "정확하지는 않습니다". 물건을 다루는 방법에 대한 정보는 FAQ 항목과 [Structuring Reducers] (http://redux.js.org/docs/recipes/StructuringReducers.html)를 다시 읽어보십시오. – markerikson