React Redux - обновление магазина с помощью Ajax Response - PullRequest
0 голосов
/ 26 ноября 2018

Итак, у меня есть этот магазин Redux:

state = { 
      ...
      saved_books: {
        FICTION:{book1, book2, book3},
        NONFICTION: {book1, book2, book3}
      },
      ...
    }

Я использую response-redux для подключения компонента, который отображает сохраненные книги в каждой категории (художественная и не художественная литература).

Это прекрасно работает , пока пользователь не решит добавить или удалить сохраненную книгу .

Процесс выглядит следующим образом:

  1. Пользователь нажимает кнопку для сохранения / удаления книги
  2. Ajax отправляется на сервер, который добавляет или удаляет выбранныйbook
  3. Отправляет действие (ajax thunk), которое получает все сохраненные книги с сервера
  4. Обновляет хранилище с результатом

Довольно стандартно.

Проблема заключается в том, что компоненты реакции, подключенные к этой части хранилища, исчезают при сохранении / удалении книги.

Логика редуктора в # 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.

Как я могу сделать это неизменным, если единственным источником правды является сервер?

...