我已经阅读/观看了有关Redux的ReactJs的一些指南/教程,内容涉及如何使用它来获取数据并将其显示在屏幕上。基本是:
const DataView = () => {
const dispatch = useDispatch();
const {data} = useSelector(data => data);
useEffect(() => {
dispatch(getData());
}, []);
return (
// show data
);
};
这很好用。数据提取完成,并且数据正确显示。
但是,如果此数据是明智的,而其他人不应该能够看到它怎么办?如果我是第一次进入此屏幕,则“数据”将为空。没问题useEffect将进行数据获取,并在完成后显示信息。
现在,如果我转到另一个页面,然后又回到那里,该怎么办?因为“数据”不再为空,所以我将显示旧数据,直到再次完成提取。这不是问题,因为我与同一个用户在一起。
如果该用户注销,又有一个用户登录怎么办? 如果新用户进入此页面,我将显示其他用户信息,直到提取完成(这可能需要几秒钟)。
我正在考虑几种方法来“解决”此问题,但是我不确定哪一个是正确的:
1)将信息存储在链接到用户会话的化简器中。
2)直接调用axios以获取数据,以避免显示来自axios归约器的旧数据。
3)登录/注销后清除减速器信息
任何解释这种情况的博客/视频/书籍都将受到欢迎!谢谢!
答案 0 :(得分:1)
只有我的2美分...
由于您提到的安全原因,我在Redux存储中管理的所有数据始终与当前登录用户相关。
在注销或过期的会话(jwt +刷新令牌)上,我总是通过redux-reset重置Redux存储。
一般来讲,我看不出有什么充分的理由在本地保留/保留多个用户会话数据。
以下是与该主题相关的一些很好的资源:
* 简而言之,他们所做的就是在注销时重置/清除商店+本地存储/ cookie。