2017-03-03 2 views
2

나는 두 번째로 dispatch하지 않는 redux 액션을 플래그하는 방법을 궁금해합니다.한 번만 배상 조치를 시행하는 방법은 무엇입니까?

let triggerOnce = false; 

export function populateStore() { 
    return (dispatch) => { 
    if (triggerOnce) return; 

    dispatch({ 
     type: ReviewActions.UPDATE_REVIEW_STATE, 
     data: review, 
    }); 

    triggerOnce = true; 
    }; 
} 

지금 볼 수 있듯이 외부 변수를 사용하여 플래그를 지정합니다 ... 그다지 좋지 않습니다. 더 좋은 방법이 있는지 궁금합니다. 감사의 말을 제안합니다.

+0

'populateStore'는 무슨 디스패치를합니까? 'triggerOnce'는 아마도 상태에 저장되어서 de/serialize 될 수 있습니다. 어떤 것이 든'populateStore'는 디스패치하기 전에이 플래그를 검사 할 수 있습니다. – CodingIntrigue

+0

좋은 생각 인 @ 코딩의 의미 – Bruce

답변

1

나는 컨텍스트를 정확히 알 수 없으므로 실수로 사과드립니다. 글로벌 범위에서 플래그를 설정하기보다는 한 번만 액션을 호출하는 방법을 찾으려고했습니다. 그게 바람직하지 않다면, 감속기에 플래그가 설정되면 true으로 설정됩니다.

const initialState = { 
    hasBeenSet: false, 
    ...restOfState, 
} 

const events = { 
    [UPDATE_REVIEW_STATE]: (state) => { 
    const { hasBeenSet } = state; 

    return hasBeenSet ? state : { ...state, hasBeenSet: true }; 
    }, 
}; 

나는 도움이 되길 바랍니다.

+1

당신의 제안을위한 친구 – Bruce

관련 문제