redux - react-admin 注销时出错
问题描述
当用户注销时,由于在您进入登录页面之前清除了 redux 存储,我们的组件中会出现许多错误。
我们有一些使用 useQueryWithStore 的组件。这是一个例子:
const { data, total, error, loaded } = useQueryWithStore({
type: "getList",
resource: "tasks",
payload: {
pagination: { page: 1, perPage: 5 },
sort: { field: "date_end", order: "ASC" },
},
});
然后我们在渲染组件之前检查数据是否加载并且没有错误。
return (
{!loaded && !error ? (
<Loading />
) : (
...our component rendering data...
)
)
问题在于,当用户注销时,它首先会清除 redux 存储,然后才能导航到登录页面。这意味着两者!loaded
和!error
都是真实的,它会尝试渲染组件。但是因为redux store已经被清空了,data
所以是未定义的。
你会如何处理这个最好的?
- 为数据添加默认值?-
const {data = [], total, error, loaded}
- 检查数据是否未定义?-
{!loaded && !error && data}
- 使用可选链接?- 任何引用都
data
可以使用可选链接 -data?.map(...map function...)
- 提出拉取请求以更改注销顺序?- 我们可以导航到登录页面或注销页面,然后清除 redux 存储,而不是先清除 redux。
- 我没有想到的更好的方法?
想法?
解决方案
推荐阅读
- java - 修复递归回溯算法代码
- r - R中差分进化的代码错误
- r - 大型矩阵的 RAM 高效乘法 - R 中的 RAM 用完
- intellij-idea - 如何从 gradle 项目中的 Kotlin 类运行 main 方法?
- apache-spark - 元数据库 - 如何使用自定义 JDBC 驱动程序?(数据块)
- excel - 未知的 VBA 代码错误(在 macbook 上编码,在 windwos 上运行)
- python - Python:将数据转换为时间序列
- java - 如何获取 Spring-AMQP 中已声明队列的消费者计数?
- react-native - 如何获取每个 Apollo 客户端以创建动态抽屉路由(React Navigation)?
- python - 如何对分类列进行分组,然后是数值列,并基于该组对数值进行分箱