导航到显示页面时强制 GET_ONE 请求

Posted

技术标签:

【中文标题】导航到显示页面时强制 GET_ONE 请求【英文标题】:Force GET_ONE request when navigating to Show page 【发布时间】:2018-12-28 01:02:13 【问题描述】:

我相信在许多 API 中都很常见,当记录是 List 请求的一部分时,我们会返回记录的字段子集,而当它是对其 Show 端点的单记录请求时会返回更多详细信息。

似乎 react-admin 在加载 Show 页面时试图避免执行第二个请求(可能重新使用 List 中的记录数据?),这导致数据丢失。刷新页面可以解决这个问题,但我想知道是否有一个设置会在每次显示页面加载时强制执行 GET_ONE 请求。

【问题讨论】:

【参考方案1】:

没有设置。然而,这应该可以通过custom saga 来实现,它会监听LOCATION_CHANGE 动作(来自react-redux-router)并在新位置pathname/show 结尾时调度refreshView 动作(来自react-admin) .

编辑:但这很奇怪。我们仅使用从列表中获得的数据进行乐观显示,但在从列表导航到显示页面时,我们仍然请求GET_ONE。您有显示您的问题的代码框吗?

【讨论】:

问题似乎是页面在GET_ONE 请求完成之前呈现,大概是列表数据,我们没有正确处理这些字段不可用的情况。我们在代码中添加了条件,仅在可用且一切按预期工作时才呈现。这种行为是否记录在任何地方? 是的,这是乐观的 UI。我们首先使用我们拥有的数据进行渲染,以便应用程序看起来更快。我们可能应该更好地记录这一点

以上是关于导航到显示页面时强制 GET_ONE 请求的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 window.location 发出 HTTP 请求而不是使用缓存?

当用户在 iframe 中导航时,强制 iframe 的父页面自动滚动到顶部?

如何在 React 中强制渲染组件

如何强制显示移动 Safari 底部导航栏以编程方式显示?

当用户再次导航返回和前进时强制刷新/重新加载

在 Vue 中强制刷新词缀