2017-11-23 11 views
0

私はidとコールバック関数を取り入れたアクションクリエータを持っています。これはサーバーに要求を送信して何らかの処理を行い、ダミーアクションを返します。私がここでやりたいのは、コールバック関数を呼び出して終了することです。そのダミーアクションは、たとえば投稿を好きなように私には役に立たないからです。私はちょうどユーザーがポストが好きだったことを知るためにサーバーを必要とします、私はいくつかの状態の変更はありません、私はコールバックを介してボタンの状態を変更することができます。だから私の質問は、アクションクリエイターにアクションを返すことです。ここに私のコードですアクションクリエイターはアクションを返す必要がありますか?

export const deleteProduct = (id,cb) => async (dispatch) => { 
    let res = await axios.delete(`${BASE_URL}/api/v1/product/${id}`, 
        {withCredentials:true}) 
    cb(); 
    dispatch({type: DUMMY, payload : res.data});  
}; 

私が製品を削除すると、コールバックが発動されたときにリストからその製品を隠すことができます。私はディスパッチを明示的に呼び出す必要がありますか、それはオプションです。 ?私はAxusの約束を処理するためにRedux-thunkを使用しています。

答えて

2

redux-thunkディスパッチは完全にオプションです。実際には、main motivationsの1つは、条件付きのディスパッチを提供することです。

だからええ、あなたは完全にだけ行うことができます。

export const deleteProduct = (id,cb) => async() => { 
    let res = await axios.delete(`${BASE_URL}/api/v1/product/${id}`, 
        {withCredentials:true}) 
    cb();  
}; 

をしかし、私はこれはunidirectional data flowある再来の主要な概念の一つに、破壊されると信じています。概念は、データが一方向にのみ流れなければならないということです。ビューは、ビューを更新するためにレンダリングをトリガーするようにストアを更新するアクションをディスパッチします。ビューはディスパッチしてアクションから復帰してはなりません。

基本的には、削除後にリストからアイテムを非表示にする場合は、コールバックでこれを行う代わりに、ストア内のデータを更新するアクションをディスパッチして、削除しないでコンポーネントを再レンダリングします。react-reduxその中のアイテム。

関連する問題