问题描述
当用户注销时,由于 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 存储已经被清除,data
是未定义的。
你会如何最好地处理这个问题?
- 为数据添加默认值? -
const {data = [],loaded}
- 检查数据是否未定义? -
{!loaded && !error && data}
- 使用可选链接? - 对
data
的任何引用都可以使用可选链 -data?.map(...map function...)
- 发出拉取请求以更改注销顺序? - 我们可以导航到登录页面或注销页面,然后清除 redux 存储,而不是先清除 redux。
- 我没有想到更好的方法?
想法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)