首页 > 解决方案 > GET后商店不更新

问题描述

通过按钮删除资源后,我使用 GET 更新了相同的资源,我得到了正确数据的响应,但 redux 存储没有更新(显然 redux 操作看不到差异),因此道具没有更新。

但是,当我执行 CREATE 然后像以前一样执行 GET(相同的调用)时,redux 商店会看到差异并更新道具。

两次调用之间的资源相同(在 DELETE 或 CREATE 之后),调用甚至相同。为什么在一种情况下 redux 商店会看到差异,而在另一种情况下却看不到?

crudCreate(`${CAMPAIGNS}/${id}/${LINE_ITEMS}`, data, () =>
  crudGetAll(LINE_ITEMS, {}, { campaignId: id }, 1000, () => this.displayModal()),
);

crudDelete(LINE_ITEMS, lineItem.id, { id }, lineItem, () =>
   crudGetAll(LINE_ITEMS, {}, { campaignId: id }, 1000, ({ payload: { data } }) =>
    this.updateLineItems(data),
   ),
);

我在 Redux 调试器或控制台上没有任何错误。我有一个自定义 DataProvider,在这种情况下,它只会重定向到好的路线

case LINE_ITEMS: {
     if (type === 'DELETE') {
      return { urn: `${apiUrl}/campaigns/${filter.id}/${resource.toLowerCase()}/${id}` };
      }
     if (filter) {
      if ('campaignId' in filter) {
       return {
        urn: `${apiUrl}/campaigns/${filter.campaignId}/${resource.toLowerCase()}`,
         filter: {
          ...filter,
          campaignId: undefined,
         },
        };
       }
      }
      return {
       urn: `${apiUrl}/campaigns/${id.campaignId}/${resource.toLowerCase()}/${data.lineItemId}`,
      };
     }

而且我只使用 react-admin 的 reducer,这里是index.js

import { connect } from 'react-redux';
    import { crudDelete, crudGetAll, translate } from 'react-admin';
    export default connect(
      state => ({
        lineItems: Object.values(state.admin.resources.lineItems.data) || {},
        swordData: Object.values(state.admin.resources.sword.data),
      }),
      { crudDelete, crudGetAll },
    )(withRouter(WithPermissions(translate(MyComponent))));

有人有想法吗?谢谢你的帮助

标签: reactjsreduxreact-admin

解决方案


推荐阅读