Итак, у меня есть этот магазин Redux:
state = {
...
saved_books: {
FICTION:{book1, book2, book3},
NONFICTION: {book1, book2, book3}
},
...
}
Я использую response-redux для подключения компонента, который отображает сохраненные книги в каждой категории (художественная и не художественная литература).
Это прекрасно работает , пока пользователь не решит добавить или удалить сохраненную книгу .
Процесс выглядит следующим образом:
- Пользователь нажимает кнопку для сохранения / удаления книги
- Ajax отправляется на сервер, который добавляет или удаляет выбранныйbook
- Отправляет действие (ajax thunk), которое получает все сохраненные книги с сервера
- Обновляет хранилище с результатом
Довольно стандартно.
Проблема заключается в том, что компоненты реакции, подключенные к этой части хранилища, исчезают при сохранении / удалении книги.
Логика редуктора в # 4 - это та же логика, которая первоначально отображает сохраненныекниги, поэтому я знаю, что проблема только при обновлении магазина.
Вот как я обновляю магазин (я полагаю, неправильно):
// set = FICTION, NONFICTION, etc
// books = {book1, book2, book3, etc}
return Object.assign({},
state, {saved_books: {
...state.saved_books,
[set]: books
});
Я думаю, что saved_books[set]
не обновляется неизменно.Скажите saved_books[set] = {book1, book2}
, тогда мы удалим book2
.
Как я могу сделать это неизменным, если единственным источником правды является сервер?