2017-08-03 21 views
0

私はreactとreduxで新しく、複数のアクションに対して1つのストアを使用できるかどうかを知りたいと思います。redux rejactjs複数のアクションに1つのストアを使用

私はこれを試みていますが、最初のアクションは最後のアクションで上書きされます。なぜですか?

私は2つの別々のコンポーネントでアクションを呼び出していますが、私はそれらをアプリケーションコンポーネントの2つのコンポーネントと呼びます。

reducer.js

const dataReducer = (state = { 
    fetching: false, 
    fetched: false, 
    data: {}, 
    error: null 
}, action) => { 
    switch (action.type) { 
    case 'FETCH_DATA_PENDING': 
     return {...state, fetching: true} 
     break; 
    case 'FETCH_DATA_FULFILLED': 
     return {...state, fetching: false, fetched: true, data: action.payload.data } 
     break; 
    case 'FETCH_DATA_REJECTED': 
     return {...state, fetching: false, error: action.payload } 
     break; 
    } 
    return state; 
} 

module.exports = dataReducer; 

import axios from 'axios'; 

const apiUrl = 'https://swapi.co/api/'; 

//fetch categories 
export function fetchCategories() { 
    return { 
    type: 'FETCH_DATA', 
    payload: axios.get(apiUrl) 
    } 
} 

//fetch films 
export function fetchFilms() { 
    return { 
    type: 'FETCH_DATA', 
    payload: axios.get(apiUrl + 'films') 
    } 
} 

答えて

0

あなたはこのようにそれを行うことができる必要がありますが、あなたの行動の両方が同じタイプの中に混乱するかもしれないという事実をaction.jsあなたのレデューサー。タイプFETCH_FILMSFETCH_CATEGORIESの方が役に立ちます。その方法は、減速機はもちろん、あなたがすべてのレデューサーがそれらとまったく同じことをしたい場合を除き、それらとは別のものを行うことができます。

+0

私の投稿を編集します。私は減速機を置いた。私の減速機も同じことをしています。だから私は1つの減速機を使いたい。 – Momen

+0

3つのフェッチアクションを送信するフレームワークを使用していますか?あなたは現在 'FETCH_DATA'だけを送信しているからです。あなたは 'FETCH_DATA_PENDING'やあなたのレデューサーにリストされている他のものを送っていません。 – tenor528

+0

はい私は 'redux-promise-middleware'を使用しています – Momen

関連する問題