2016-08-08 5 views
0

React/Reduxを使用して、外部データをexpressで初期状態に戻そうとしています。私はので、私はこのように私の減速とd3.json使用していたD3で動作するように使用されています:d3.jsonを使ってReact/reduxでInitialStateを取得する方法

var url = 'http://localhost:3000/authors'; 

function cool() { 
d3.json(url, function(data) { 
dataset = data; 
}); 
} 

    const authorData = (state = dataset, action) => { 
    switch (action.type) { 
     case 'DATA_CHART_ALL': 
     return action.data 
     case 'DATA_CHART_FILTER': 
     return action.data 
      default: 
      return state; 
       } 
       }; 

export default authorData; 

D3.jsonは、コールバック関数であるので、私の減速が未定義返されます。私はこれにどのように対処しますか? d3.json以外のものを使用できますか?アプリケーションの冒頭で

コールこの:

// redux action using a dispatcher (think middleware) 
export function cool(url) { 
    return function(dispatch) { 
     return d3.json(url, response => { 
      dispatch(setData(response)) 
     } 
    } 
} 

// redux action 
export function setData(data) { 
return { 
     type: 'DATA_CHART_ALL', 
     data 
    } 
} 

const authorDataReducer = (state = {}, action) => { 
    switch (action.type) { 
     case 'DATA_CHART_ALL': 
     return action.data 
     case 'DATA_CHART_FILTER': 
     return action.data 
     default: 
     return state; 
    } 
}; 

export authorDataReducer; 

はそれを使用する:

答えて

1

あなたはReduxの中に、ディスパッチャとして動作する機能を必要とする

store.dispatch(cool("MY_URL")); 

注意しています私は要求のエラー処理をチェックしていません。

+0

ありがとう。私は同じ解決策を思いついた。しかし、私は他の解決策があるのだろうかと思っていた... –

+0

これは動作しないので私はこれに戻ります。私はこのエラー 'ncaught TypeError:(0、_index2.default)は関数ではありません' ...? –

+1

私たちはあなたのコードのコピーが必要です – DOMZE

関連する問題