【发布时间】:2019-08-08 16:23:27
【问题描述】:
我需要将一些初始数据从 API 加载到 redux。用户必须获得授权才能访问 API。用户通过一个 oauth 过程进行授权——发送到外部登录并发送到回调 URL,token 保存到 localstorage,授权状态保存在 redux store 中。
当我配置 redux store 时,授权状态为 preloaded state。
当用户第一次加载应用程序时,他们
- 可能已经被授权(有一个有效的保存令牌),或者
- 可能需要授权(没有有效的保存令牌)。
我希望将初始提取代码放在一个地方。我可以根据需要调用“fetchTodos”,但我必须这样做 在 init 和 loginCallback 上 . 我想出的只是制作一个组件来包装应用程序,只是为了加载这些数据,但这似乎有点全局和hacky。
const LoadTodosWrapper = () => {
const dispatch = useDispatch();
const authorized = useSelector(getAuthorized());
useEffect(() => {
if(authorized) {
dispatch(fetchTodos());
}
}, [authorized]);
return <App />;
}
有没有更好的模式来获取初始数据,在验证用户被授权之后?
【问题讨论】: