reactjs - 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))));
有人有想法吗?谢谢你的帮助
解决方案
推荐阅读
- powershell - test batch statements directly in powershell without wrapping the call in a batch file
- python - 如何使用 BeautifulSoup 仅提取给定类或标签内的文本?
- typescript - Typescript knex:无法读取未定义的属性“客户端”
- java - Java:仅打印字符串中的唯一字符
- docker - Docker 堆栈不按标签更新容器数据
- python - 行中的 Python/Pandas 数据帧时间数据(按名称分组)
- ip-address - 如何在 Azure VMSS 中为单个 NIC 创建多个 IP 地址
- javascript - 如何对chart.js饼图的每个弧段的borderColor进行更多控制
- python - 根据其他列中的值替换列值
- swiftui - 设置带有几何阅读器的 ScrollView 时是否会出现无限循环?