2017-02-26 5 views
2

以下のように呼び出す2つのreduceアクションがあります。ビューが最初にロードされるReduxアクションが2回目に呼び出されない

export function action1(params) { 
    //This line is always called. 
    return (dispatch) => { 
    //This line is not called the second time. 
    return MyApi.call1(params) 
    .then(response => { 
     // some logic 
     return dispatch(someFunction1()); 
    }) 
    .catch(error => { 
     throw(error); 
    }); 
    }; 
} 

export function action2(params) { 
    return (dispatch) => { 
    return MyApi.call2(params) 
    .then(response => { 
     // call the first API again 
     action1(); 
     return dispatch(someFunction2()); 
    }) 
    .catch(error => { 
     throw(error); 
    }); 
    }; 
} 

action1は、ビューのコンストラクタ内で呼び出されます。アクションを実行してaction2を同じビューで起動すると、action2action1が呼び出され、更新されたリストがサーバーから取得される必要があります。残念ながら、action1が2回目に呼び出されると、エラーなしでコードが破損します。

私はここで何が欠けていますか?

+5

btw、あなたはaction1をディスパッチしていません: 'dispatch(action1(params))'; –

+1

それは働いた。それは私の馬鹿だった。私はそれを受け入れることができるようにこれを回答として投稿できますか? –

答えて

2

action1をディスパッチしていません。 dispatchなしaction1()を起動

dispatch(action1(params))

だけで関数を返します。返された関数にdispatchを得るためには、その関数dispatchが必要です。その後、それはredux-thunkミドルウェアによってキャッチされます。ミドルウェアはdispatchを呼び出し、関数を呼び出す。

関連する問題