2017-02-03 3 views
0

은 내가 함수의 합성에 사용할 현재 시나리오가 : 나는 현재 때문에이 connect()의 모든 종류에 사용하지에 funcTwo 작동하지 파견의 문제에 직면하고있다redux-thunk pass 다른 기능으로 전달 하시겠습니까?

const funcTwo = (status, response) => 
    (dispatch) => { 
    if (response.error) { 
     dispatch({ type: TOKEN_FAILURE }); 
     dispatch(notificationShow('ERROR', response.error.message)); 
    } else { 
     dispatch({ type: TOKEN_SUCCESS, payload: response.id }); 
    } 
    }; 

export const funcOne = target => 
    (dispatch) => { 
    dispatch({ type: TOKEN_REQUEST }); 
    Helper.createToken(target, funcTwo); 
    }; 

을하지만 난 알고 싶어 그것은 어떻게 든 그것에 파견을 전달할 수 있습니까?

답변

1

썽크 자체 인 두 개의 함수를 만들고 응답 처리 논리를 첫 번째 논리로 옮깁니다. 도우미 함수는 Promise을 반환해야 성공/오류 처리기를 연결할 수 있습니다.

아이디어는 하나의 썽크가 여러 가지 작업을 발송할 수 있으며 그 중 일부 또는 전부가 다른 썽크가 될 수 있습니다.

의사 코드 :

export function requestToken(target){ 
    return (dispatch) => { 
    dispatch({ type: TOKEN_REQUEST }) 
    Helper.createToken(target) 
    .then(
     response => { 
      dispatch({ 
      type: TOKEN_REQUEST_SUCCESS, 
      payload: response.id 
      }) 
     }, 
     //your createToken failure handler 
     error => { 
      dispatch(yourErrorActionCreator(err)) 
     } 
    ) 
  } 
0

예! 그것은.

const funcTwo = (status, response, dispatch) => 
() => { 
    if (response.error) { 
     dispatch({ type: TOKEN_FAILURE }); 
     dispatch(notificationShow('ERROR', response.error.message)); 
    } else { 
     dispatch({ type: TOKEN_SUCCESS, payload: response.id }); 
    } 
    }; 

export const funcOne = target => 
    (dispatch) => { 
    dispatch({ type: TOKEN_REQUEST }); 
    Helper.createToken(target, (status, response) => funcTwo(status, response, dispatch)); 
    };