Reactjs React-Redux:更新对象正在更新状态,但未触发选择器

Reactjs React-Redux:更新对象正在更新状态,但未触发选择器,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我有一个redux分支,其结构如下: { byId: { 1: { id: 1, name: 'Name 1', username: 'Username 1' }, 2: { id: 2, name: 'Name 2', username: 'Username 2' }, 3: { id: 3, name: 'Name 3', username: 'Username 3' }, ... }, ... } 我有一个美国案例,触发一个操作来更改条目的名称

我有一个redux分支,其结构如下:

{
  byId: {
    1: { id: 1, name: 'Name 1', username: 'Username 1' },
    2: { id: 2, name: 'Name 2', username: 'Username 2' },
    3: { id: 3, name: 'Name 3', username: 'Username 3' },
    ...
  },
  ...
}
我有一个美国案例,触发一个操作来更改条目的名称,发布到我的API,返回完整的对象(在其他源操作我的后端时在本地反映更改),然后将其重新插入我的redux状态

行动:

changeName(id, name) => {
  // post to API
  const object = <object from API>
  dispatch({
    type: 'UPDATE_USER',
    byId: { id: object }
  });
};
我正在从一个列表触发此操作,该列表正在呈现来自
byId
的行-我可以确认它正确更新了我的redux,但是它不会导致列表的重新呈现。如果我触发另一个操作,即删除列表行,列表将更新以反映删除的项目,以及先前未导致重新加载的
changeName

我知道这与我的
$merge
有关,并使用相同的
值和更深嵌套的
字段
更改将我的redux混合在一起,不会注意到状态更改,但我不确定从这里开始该怎么做

谢谢

  • 编辑:我还为这个列表使用了一个使用lodash/isEqual的自定义选择器
我也试过:

return update(state, {
  byId: {
    [action.id]: { $set: action.data }
  }
});

如果运气不好

“我可以确认它正确地更新了我的redux,但是它不会导致我的列表重新出现”-这通常是一个变异redux存储的问题。你能提供更新功能的源代码吗?@lavor它正在使用@Arthur update只进行浅层合并。你能分享一下
update()
的结果吗?@JosephD。我怎样才能准确地分享这些信息?@JosephD。如果控制台记录我的
update()
调用,我可以看到新的redux分支,其属性值已正确更新
export default createSelectorCreator(defaultMemoize, isEqual);
return update(state, {
  byId: {
    [action.id]: { $set: action.data }
  }
});