GET之后商店不会更新

时间:2019-11-26 12:55:40

标签: reactjs redux react-admin

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

但是,当我这次创建一个CREATE然后执行一个像以前一样的GET(相同的调用)时,redux存储会看到diff并更新道具。

两个调用之间的资源是相同的(在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))));

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

0 个答案:

没有答案