2017-08-09 17 views
0

私はredux-loopのv2.2.2を使用してサーバーコールからの副作用を処理しています。Redux-Loopディスパッチがレデューサーから約束を返さない

はそうのように私のコンポーネントからアクションをdispactchedた:

checkStatus() { 
    const user = Utils.toJS(this.props.user); 
    this.props.dispatch(UserActions.getUserData(user._id)) 
    .then((res) => { 
     console.log(res) 
    } 
} 

私は私の約束が戻っ派遣から来ることを期待するが、それは常に

[]

を返す私の行動はそうのように見えます...

export async function getUserData(data) { 
return await getUser(data) 
    .then((res) => ({type: USER_GET_SUCCESS, payload: res})) 
    .catch((err) => ({type: USER_GET_FAILURE, payload: err})); 
} 

ここで、getUserはli KE:

export async function getUser(data) { 
    return await get(`/users/${data}`) 
} 

などのような状態に減速でキャッチし、保存されます:

case USER_GET_SUCCESS: 
    return state 
    .set('user', fromJS(action.payload.data)); 

データは常に適切に戻ってくるが、何らかの理由で元に約束として戻されることは決してありませんディスパッチ。

どのような提案も素晴らしいでしょう。

+0

await/async – DKo

答えて

1

私はこの問題の一部が、単一の機能の中でasync/await呼び出しにあなたの約束.thenコードを混ぜていると思います。代わりにこれを試してください:

export async function getUserData(data) { 
    try { 
    const result = await getUser(data); 
    return { type: USER_GET_SUCCESS, payload: result }; 
    } catch (err) { 
    return {type: USER_GET_FAILURE, payload: err}; 
    } 
} 
関連する問題