From f539da1f7722f688bbf84543c68fff0ed3b86f7f Mon Sep 17 00:00:00 2001 From: Tudor Stanciu Date: Sat, 11 Apr 2020 16:31:58 +0300 Subject: [PATCH] redux infrastructure --- src/index.js | 12 +++++++++--- src/redux/actions/courseActions.js | 3 +++ src/redux/configureStore.js | 14 ++++++++++++++ src/redux/reducers/courseReducer.js | 9 +++++++++ src/redux/reducers/index.js | 8 ++++++++ 5 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 src/redux/actions/courseActions.js create mode 100644 src/redux/configureStore.js create mode 100644 src/redux/reducers/courseReducer.js create mode 100644 src/redux/reducers/index.js diff --git a/src/index.js b/src/index.js index 67923c1..0e5ab40 100644 --- a/src/index.js +++ b/src/index.js @@ -4,10 +4,16 @@ import { BrowserRouter as Router } from "react-router-dom"; import "bootstrap/dist/css/bootstrap.min.css"; import App from "./components/App"; import "./index.css"; +import configureStore from "./redux/configureStore"; +import { Provider as ReduxProvider } from "react-redux"; + +const store = configureStore(); render( - - - , + + + + + , document.getElementById("app") ); diff --git a/src/redux/actions/courseActions.js b/src/redux/actions/courseActions.js new file mode 100644 index 0000000..5c32f01 --- /dev/null +++ b/src/redux/actions/courseActions.js @@ -0,0 +1,3 @@ +export function createCourse(course) { + return { type: "CREATE_COURSE", course }; +} diff --git a/src/redux/configureStore.js b/src/redux/configureStore.js new file mode 100644 index 0000000..c1130b8 --- /dev/null +++ b/src/redux/configureStore.js @@ -0,0 +1,14 @@ +import { createStore, applyMiddleware, compose } from "redux"; +import rootReducer from "./reducers"; +import reduxImmutableStateInvariant from "redux-immutable-state-invariant"; + +export default function configureStore(initialState) { + const composeEnhancers = + window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; //add support for Redux dev tools + + return createStore( + rootReducer, + initialState, + composeEnhancers(applyMiddleware(reduxImmutableStateInvariant())) + ); +} diff --git a/src/redux/reducers/courseReducer.js b/src/redux/reducers/courseReducer.js new file mode 100644 index 0000000..c080300 --- /dev/null +++ b/src/redux/reducers/courseReducer.js @@ -0,0 +1,9 @@ +export default function courseReducer(state = [], action) { + switch (action.type) { + case "CREATE_COURSE": + return [...state, { ...action.course }]; + + default: + return state; + } +} diff --git a/src/redux/reducers/index.js b/src/redux/reducers/index.js new file mode 100644 index 0000000..5c5859d --- /dev/null +++ b/src/redux/reducers/index.js @@ -0,0 +1,8 @@ +import { combineReducers } from "redux"; +import courseReducer from "./courseReducer"; + +const rootReducer = combineReducers({ + courses: courseReducer +}); + +export default rootReducer;