React Redux-使用Ajax响应不变地更新商店

时间:2018-11-26 16:05:01

标签: javascript reactjs redux react-redux immutability

所以我有这个Redux商店:

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

我正在使用react-redux连接一个组件,该组件呈现每个类别(小说和非小说)中保存的书籍。

这很好用,直到用户决定添加或删除已保存的书

流程如下:

  1. 用户单击按钮以保存/删除图书
  2. Ajax发送到服务器,该服务器添加或删除所选的书
  3. 调度一个动作(ajax重击),该动作将从服务器获取所有已保存的图书
  4. 使用结果更新商店

相当标准。

问题在于,保存/删除书籍后,连接到商店这一部分的反应组件会消失。

#4中的reducer逻辑与最初显示已保存的书的逻辑相同,因此我知道问题仅在更新商店时出现。

这是我更新商店的方式(我想是不正确的):

  // 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

如果我唯一的真实来源是服务器,该如何不变地更新它?

0 个答案:

没有答案