2017-10-14 1 views
0

썽크 시작 부분에 'START'동작을 디스패치 한 다음 비동기 동작을 기다리고 'SUCCESS'동작을 보냅니다.발송 된 작업에서 썽크를 중단 할 수 있습니까?

경우에 따라이 썽크가 이전 (성공 동작)이 끝나기 전에 다시 전달되기 때문에 두 번째 START 동작이 거부되고 썽크가 비동기 동작 및 END 동작을 계속 중단하기를 원합니다.

내 접근 방식은 파견 된 작업이 이미 전달 된 경우 (이전 작업은 현재와 동일 함) 미들웨어를 체크인하는 것이지만 거부 된 작업을 수행 한 직후에 썽크에서 반환 할 수있는 방법을 파악할 수 없습니다. 좋은 '방법.

현재 미들웨어에서 false를 반환하고 발송에서 반환 된 값을 확인해야합니다.

export const doSomething =() => async (dispatch, getState) => { 

    if(!dispatch({type: 'START'})) return; 

    //...async stuff 

    dispatch({type: 'SUCCESS'}); 
} 

내가 원 포인트 (미들웨어)에서 제어 할 수있는 방법이 있습니까?

답변

0

해당 작업 (START, SUCCESS, ...)에 따라 저장소 상태가 변경되는 감속기가 있다고 가정합니다.

function (state = {}, action) { 
    if (action.type === 'START') { 
    return {...state , isLoading: true }; 
    } 

    if (action.type === 'SUCCESS') { 
    return {...state , isLoading: false }; 
    } 
    return state; 
} 
: 감속기는 다음과 같은 일을했다는 것을 가정

export const doSomething =() => async (dispatch, getState) => { 

    if (getState().isLoading) return ; // <-- ⚠️ ⚠️ ⚠️ 

    if(!dispatch({type: 'START'})) return; 

    //...async stuff 

    dispatch({type: 'SUCCESS'}); 
} 

:

그렇다면, 당신은 파견을 결정하기 전에 저장 상태를 확인해야

관련 문제