어제 axios를 못했다 react하느라 오늘 redux를 한다.
https://www.youtube.com/watch?v=93p3LxR9xfM
https://www.youtube.com/watch?v=CVpUuw9XSjY
What is redux?
https://www.youtube.com/watch?v=mhqO-VL6U2I
https://www.robinwieruch.de/react-redux-tutorial
https://www.youtube.com/watch?v=3sjMRS1gJys
이건 페어분이 알려주신 개념이다. cmarket-redux를 하게 되었다.
계속 보고 있는데 뭔가 메커니즘이 이해는 되는데 해봐야할것같다.
https://www.youtube.com/watch?v=poQXNp9ItL4&t=82s
https://www.youtube.com/watch?v=9boMnm5X9ak&list=PLC3y8-rFHvwheJHvseC3I0HuYI2f46oAK
const redux = require("redux");
const createStore = redux.createStore;
const BUY_CAKE = "BUY_CAKE";
function buyCake() {
return {
type: BUY_CAKE,
info: "First redux action",
};
}
//(previousState, action) => newState
const initialState = {
numOfCakes: 10,
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case BUY_CAKE:
return {
...state,
numOfCakes: state.numOfCakes - 1,
};
default:
return state;
}
};
const store = createStore(reducer);
console.log("Initial state", store.getState());
const unsubscribe = store.subscribe(() =>
console.log("Updated state", store.getState())
);
store.dispatch(buyCake());
store.dispatch(buyCake());
store.dispatch(buyCake());
unsubscribe();
const redux = require("redux");
const createStore = redux.createStore;
const applyMiddleware = redux.applyMiddleware;
const thunkMiddleware = require("redux-thunk").default;
const axios = require("axios");
const initialState = {
loading: false,
users: [],
error: "",
};
const FETCH_USERS_REQUEST = "FETCH_USERS_REQUEST";
const FETCH_USERS_SUCCESS = "FETCH_USERS_SUCCESS";
const FETCH_USERS_FAILURE = "FETCH_USERS_FAILURE";
const fetchUserRequest = () => {
return {
type: FETCH_USERS_REQUEST,
};
};
const fetchUsersSuccess = (users) => {
return {
type: FETCH_USERS_SUCCESS,
payload: users,
};
};
const fetchUsersFailure = (error) => {
return {
type: FETCH_USERS_FAILURE,
payload: error,
};
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case FETCH_USERS_REQUEST:
return {
...state,
loading: true,
};
case FETCH_USERS_SUCESS:
return {
loading: false,
users: action.payload,
error: "",
};
case FETCH_USERS_FAILURE:
return {
loading: false,
users: [],
error: action.payload,
};
}
};
const fetchUsers = () => {
return function (dispatch) {
dispatch(fetchUserRequest());
axios
.get(`https://jsonplaceholder.typicode.com/users`)
.then((response) => {
// response.data is the array of users
const users = response.data;
dispatch(fetchUsersSuccess(users));
})
.catch((error) => {
// error.message is the error description
dispatch(fetchUsersFailure(error.message));
});
};
};
const store = createStore(reducer, applyMiddleware(thunkMiddleware));
store.subscribe(() => {
console.log(store.getState());
});
store.dispatch(fetchUsers());