2017-11-25 10 views
0

私はredux初心者です。私はredux-thunkを使用していますが、私はこの関数からエラーが発生しています。アクションはプレーンオブジェクトでなければなりません。非同期アクションにはカスタムミドルウェアを使用します。リュクス・サンク関連

Error: Actions must be plain objects. Use custom middleware for async actions. 
this.props.sendPaypalOrderToFirebase(body) 



export const sendPaypalOrderToFirebase = (orderInfo) => { 
    async (dispatch, getState) => { 
    database.ref('paypalOrders/' + uuid()).set({ 
     orderInfo 
    }); 
    return dispatch(paypalOrderFirebaseSuccess(orderInfo)) 
    } 
} 

export const createOrder = (paymentMethod, paymentData) => ({ 
    type: actionTypes.CREATE_ORDER, 
    paymentMethod, 
    paymentData 
}); 
export const paypalOrderFirebaseSuccess = (orderInfo) => ({ 
    type: actionTypes.PAYPAL_ORDER_FIREBASE_SUCCESS, 
    orderInfo 
}) 

ご協力いただきありがとうございます。

+0

asyncリターンを約束します。非同期を使用する強い理由がない場合は、関数を返すだけです。この関数では、非同期アクションを行い、アクションをディスパッチします。ここでの問題は、関数を返さないということです – stack26

答えて

0

ここでの問題はasyncの使用は、次のとおりです。

export const sendPaypalOrderToFirebase = (orderInfo) => { 
    async (dispatch, getState) => { 
    // ... 
    } 
} 

それは、アクションの作成者から返されていないとして、何このスニペットを実際にやっていることと呼ばれることは決してありません非同期矢印機能を、作成している(これを呼び出しますアクション作成者はちょうどundefinedを返します)。

いずれかによって達成することができる固定:

  1. returnに追加:

    export const sendPaypalOrderToFirebase = (orderInfo) => { 
        return async (dispatch, getState) => { 
        // ... 
        } 
    } 
    
  2. またはいくつかの括弧を取り除く:

    export const sendPaypalOrderToFirebase = (orderInfo) => async (dispatch, getState) => { 
        // ... 
    } 
    

最後に、それはです価値のあるものサンクブロックにPromise(または少なくともawait)を作成しているようには見えないので、実際にはasync機能が必要な場合は、ここをクリックしてください。

関連する問題

 関連する問題