Есть 2 редюсера. Если подключен только один из них - все работает, но при подключении combineReducers все состояние превращается в undefined, т.е., пропадает. Отмечу, что console.log(store.getState()) в index.js показывает редюсеры и состояние.
Корневой файл:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './components';
import registerServiceWorker from './registerServiceWorker';
import { BrowserRouter } from 'react-router-dom'
import thunk from 'redux-thunk'
import { Provider } from 'react-redux'
import { createStore, applyMiddleware } from 'redux'
// import reducer from './reducers/items'
// import rootReducer from './reducers/index'
// import changeLogin from './reducers/login'
import reducer from './reducers'
const store = createStore(reducer, applyMiddleware(thunk))
ReactDOM.render(
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>,
document.getElementById('root'));
registerServiceWorker();
Первый редюсер:
import {ITEMS_FETCH_DATA_SUCCESS, ITEMS_HAS_ERRORED, ITEMS_IS_LOADING} from '../constants'
const initialState = {
error: false,
loading: false,
items: {
data: []
}
}
export default (state = initialState, action) => {
switch (action.type) {
case ITEMS_HAS_ERRORED:
return {...state, error: action.hasErrored}
case ITEMS_IS_LOADING:
return {...state, loading: action.isLoading};
case ITEMS_FETCH_DATA_SUCCESS:
return {...state, items: action.items};
default:
return state;
}
}
Второй редюсер:
import {AJAX_STATUS, ITEMS_HAS_ERRORED, ITEMS_IS_LOADING} from '../constants'
const initialState = {
errorLogin: false,
loadingLogin: false,
status: {}
}
export default (state = initialState, action) => {
switch (action.type) {
case ITEMS_HAS_ERRORED:
return {...state, errorLogin: action.hasErrored}
case ITEMS_IS_LOADING:
return {...state, loadingLogin: action.isLoading}
case AJAX_STATUS:
return {...state, status: action.obj}
default:
return state
}
}
Combine:
import { combineReducers } from 'redux';
import news from './items'
import changeLogin from './login'
export default combineReducers({
news,
changeLogin,
});
Ну и один из mapStateToProps (мало ли пригодится)
const mapStateToProps = state => {
return {
items: state.items,
hasErrored: state.error,
isLoading: state.loading
}
}
Тьфу, надо было в mapStateToProps указать из какого state получать данные, т.е.:
const mapStateToPros = state => {
return {
items: state.news.items,
hasErrored: state.news.errorm
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю дипломВопрос трезво ли я рассуждаю? Что можете посоветовать?
Создайте 50-значное поле со случайными номерами от -50 до 100 (включая предельные значения) и распечатайте егоСоздайте новое поле с именем sortedNumber,...