Подтвердить что ты не робот

React-Redux - Отсутствие редуктора для ключевых "монет"

Не знаю, почему я получаю следующие ошибки.

Я просто настраиваю свой магазин, действия и редукторы, я еще не звонил о доставке.

Ожидаемые

Приложение работает нормально, состояние Redux не обновляется

Результаты

введите описание изображения здесь

SRC/index.js
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);
ЦСИ/редуктор/index.js
import { combineReducers } from 'redux'
import { coins } from './coins'

export default combineReducers({
    coins
});
SRC/редуктор/действия/coins.js
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
    }
}
наконец src/редуктор/монеты/index.js
import { ADD_COIN } from './actions'

const initialState = [];

export default (state = initialState, action) => {
    switch(action.type) {
        case ADD_COIN:
            return action.portfolio;
        default:
            return state;
    }
}
4b9b3361

Ответ 1

Ваша проблема заключается в том, как вы импортируете редуктор coins:

import { coins } from './coins'

Последний пытается получить именованный экспорт, возвращенный из файла в. /coins.

Вы не используете ни один именованный экспорт только export default, поэтому вам просто нужно импортировать файл следующим образом:

import coins from './coins';

Использование последнего приведет к тому, что coins будет содержать значение export default; который будет редуктором монет.

Ответ 2

А как раз нашел это, я неправильно импортировал мой монетный редуктор...

import { combineReducers } from 'redux'
import coins from './coins' // because I have coins/index.js

export default combineReducers({
    coins
});

вместо

import { coins } from './coins'