2017-02-03 11 views
0

は、私は関数合成使用する現在のシナリオがあります。私は現在、原因それはconnect()の任意の並べ替えに使用されていないにfuncTwoで働いていない派遣の問題に直面していますredux-thunkは別の関数にディスパッチしますか?

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

サンク自身である2つの関数を作成し、応答処理ロジックを最初のものに移動します。あなたのヘルパー関数はPromiseを返して、成功/エラーハンドラを連鎖させることができます。

考えは1つのサンクが複数のアクションをディスパッチすることができ、そのいずれかまたはすべてが別のサンク自体である可能性があります。

擬似コード:

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)); 
    }; 
関連する問題