/
eb
/
js-excel
Обзор
Документация
Войти
/
eb
/
js-excel
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/redux/rootReducer.js
57 строк
1 KB
Evgeniy Budaev
Routing implemented
17 июн 2020, 10:58
17 июн 2020, 10:58
6622668
Код
Авторство
О чём код?
import { TABLE_RESIZE, CHANGE_TEXT, APPLY_STYLE, CHANGE_STYLES, CHANGE_TITLE, UPDATE_DATE } from "./types"; // Pure function export function rootReducer(state, action) { // console.log('Action: ', action) let field let val switch (action.type) { case TABLE_RESIZE: field = action.data.type === 'col' ? 'colState' : 'rowState' return {...state, [field]: value(state, field, action)} // id, value case CHANGE_TEXT: field = 'dataState' return { ...state, currentText: action.data.value, [field]: value(state, field, action) } case CHANGE_STYLES: return {...state, currentStyles: action.data} case APPLY_STYLE: field = 'stylesState' val = state[field] || {} action.data.ids.forEach(id => { val[id] = {...val[id], ...action.data.value} }) return { ...state, [field]: val, currentStyles: {...state.currentStyles, ...action.data.value} } case CHANGE_TITLE: return { ...state, title: action.data } case UPDATE_DATE: return { ...state, openedDate: new Date().toJSON() } default: return state } } function value(state, field, action) { const val = state[field] || {} val[action.data.id] = action.data.value return val }