次のエラーが発生する理由がわかりません。
私は自分のストア、アクション、およびレデューサーをセットアップしているだけで、まだ何もディスパッチを呼び出していません。
アプリは正常に実行され、Reduxの状態は更新されません
import React from 'react'
import ReactDOM from 'react-dom'
import { createStore, applyMiddleware, compose } from 'redux'
import { Provider } from 'react-redux'
import thunk from 'redux-thunk'
import reducer from './reducer'
import App from './App'
import css from './coinhover.scss'
const element = document.getElementById('coinhover');
const store = createStore(reducer, compose(
applyMiddleware(thunk),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
));
ReactDOM.render(
<Provider store={ store }>
<App />
</Provider>, element);
import { combineReducers } from 'redux'
import { coins } from './coins'
export default combineReducers({
coins
});
import * as api from '../../services/api'
import { storage, addToPortfolio } from '../../services/coinFactory'
export const ADD_COIN = 'ADD_COIN'
export function getCoin(coin) {
return dispatch => {
api.getCoin(coin)
.then((res_coin) => addToPortfolio(res_coin))
.then((portfolio) => dispatch(updatePortfolio(portfolio)));
}
}
export function updatePortfolio(portfolio) {
return {
type: ADD_COIN,
portfolio
}
}
import { ADD_COIN } from './actions'
const initialState = [];
export default (state = initialState, action) => {
switch(action.type) {
case ADD_COIN:
return action.portfolio;
default:
return state;
}
}
問題は、coins
レデューサーのインポート方法にあります。
import { coins } from './coins'
後者は、。/ coinsのファイルから返された名前付きエクスポートを取得しようとします。
export default
という名前のエクスポートのみを使用していないため、次のようにファイルをインポートするだけで済みます。
import coins from './coins';
後者を使用すると、coins
にexport default
の値が含まれることになります。コインレデューサーになります。
ああ、ちょうどそれを見つけました、私は間違ってコインレデューサーをインポートしていました...
import { combineReducers } from 'redux'
import coins from './coins' // because I have coins/index.js
export default combineReducers({
coins
});
の代わりに
import { coins } from './coins'