Selected topic
State Management
Prefer practical output? Use related tools below while reading.
type property.jsx
// actions.js
export const ADD_TASK = 'ADD_TASK';
export const REMOVE_TASK = 'REMOVE_TASK';export function addTask(task) {
return { type: ADD_TASK, payload: task };
}
export function removeTask(id) {
return { type: REMOVE_TASK, payload: id };
}
jsx
// reducers.js
import { combineReducers } from 'redux';
import { ADD_TASK, REMOVE_TASK } from './actions';const tasks = (state = [], action) => {
switch (action.type) {
case ADD_TASK:
return [...state, action.payload];
case REMOVE_TASK:
return state.filter((task) => task.id !== action.payload);
default:
return state;
}
};
export const rootReducer = combineReducers({
tasks,
});
jsx
// store.js
import { createStore } from 'redux';
import rootReducer from './reducers';const store = createStore(rootReducer);
store.dispatch(addTask({ id: 1, text: 'Buy milk' }));
console.log(store.getState().tasks); // [{ id: 1, text: 'Buy milk' }];
store.dispatch(removeTask(1));
console.log(store.getState().tasks); // []
ADD_TASK and REMOVE_TASK) in actions.js.tasks) that handles these actions in reducers.js.combineReducers from redux.getState() method.