console.log(store.getState())
/* Prints
{
visibilityFilter: 'SHOW_ALL',
todos: [
{
text: 'Consider using Redux',
completed: true,
},
{
text: 'Keep all state in a single tree',
completed: false
}
]
}
*/
store.dispatch({
type: 'COMPLETE_TODO',
index: 1
})
store.dispatch({
type: 'SET_VISIBILITY_FILTER',
filter: 'SHOW_COMPLETED'
})
function visibilityFilter(state = 'SHOW_ALL', action) {
switch (action.type) {
case 'SET_VISIBILITY_FILTER':
return action.filter
default:
return state
}
}
function todos(state = [], action) {
switch (action.type) {
case 'ADD_TODO':
return [
...state,
{
text: action.text,
completed: false
}
]
case 'COMPLETE_TODO':
return state.map((todo, index) => {
if (index === action.index) {
return Object.assign({}, todo, {
completed: true
})
}
return todo
})
default:
return state
}
}
import { combineReducers, createStore } from 'redux'
const reducer = combineReducers({ visibilityFilter, todos })
const store = createStore(reducer)
참조 : https://ko.redux.js.org/understanding/thinking-in-redux/three-principles [redux 공식 홈페이지]
const ADD_TODO = {
type: "ADD_TODO",
payload: { content: "출근하기", priority: 1 }
}
const cart = [
{ id: 1, name: "청바지", price: 10000, quantity: 2 },
{ id: 2, name: "반바지", price: 10000, quantity: 1 },
{ id: 3, name: "반팔", price: 10000, quantity: 2 },
];
const totalPrice = cart.reduce((acc, cur) => {
return acc + cur.price * cur.quantity
}, 0);
redux를 안지 얼마 되지않아서 전역변수들을 효율적으로 잘 관리 할 수 있을지 모르겠지만 잘 활용하면 굉장한 도움이 될 것같다. 또 아쉬운점은.. 사실 state가 익숙해진지가 얼마되지 않았지만.. 그래도 배움은 재밌다!!!