Вот редьюсер через который я перезаписываю стор:
export default function reducer(state, action) {
if (action.type === 'ADD_TASK') {
let newTask = new TaskItem();
let output = {
data: {
ongoing: [
newTask,
...state.data.ongoing,
],
completed: [
...state.data.completed,
],
},
settings: state.settings,
};
console.log(state);
return output;
}
return state;
}
Вроде как в документации такой способ указан как верный, однако мне кажется, что я делаю что-то не правильно, так как при сложноструктурированном сторе объект для обновления одной записи, придется переписывать всю сложную структуру.
Как правильно обновлять данные в сторе?
Никакой логики не должно быть в редюсере. Редюсер это чистая функция без сайд эффектов только положить, достать, удалить. Всю логику нужно выносить в другое место, напрмер в middelware
такие как redux-saga. Для сложных структур с большой вложенностью можно использовать вспомогательные библиотеки immutable.js, reselect, normalizr. Это большая и очень веселая тема )
import { ADD_TASK, TASK_LOADING } from '../constants';
const initialState = {
items: [],
errors: [],
isLoading: false,
};
export default (state = initialState, action) => {
switch (action.type) {
case ADD_TASK:
return {
...state,
items: [action.item, ...state.items],
isLoading: false,
};
case TASK_LOADING:
return {
...state,
isLoading: true,
};
/* another cases... */
default:
return state;
}
};
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
не могу найти treeview компонент которого использовать в другой модели yii2 То есть при создании записи в другой модели (таблице) выбираю treeview компонента...
Когда добавляешь цифры в массив он переворачивает, а добавляешь строку не переворачивает хотя видит ее длину
Нужно puppeteer скомпилировать в exe файл! Пробую zeit/pkg но выбивает всегда ошибку http://prntscrcom/lthfx5 Искал проблему на github, все перепробовал - не помогло...