【发布时间】:2018-11-15 11:57:57
【问题描述】:
我在我的应用程序中使用 React、React-Router 和 Redux。我的问题是,当我的路由触发从登录页面的重定向以单点登录到主组件时,一旦经过身份验证,组件就会在加载资产(来自根 HTML 页面)之前呈现。在页面刷新时,资源被加载并且 CSS 正确呈现。我很困惑,因为 with react 这是一个 SPA,我原以为资产会加载着陆页渲染。
我尝试了以下方法:
- 在我的单点登出登录页面中启动 API 调用以进行身份验证之前添加 setTimeout
- 尝试在组件完全挂载之前呈现加载指示器(通过使用组件状态来控制查看哪些内容。
- 我还尝试在主组件中的视图切换中添加一个 setTimeout,以减慢从加载视图切换到主要内容的速度。
路由和身份验证工作正常。只是在组件出现后加载来自 html 的资产。
我遵循通过登录页面发起的另外两个身份验证 API 调用推送到主页的相同逻辑。此单点注销 API 调用触发与其他两个相同的方法,以
结尾history.push('/home')
流程说明:认证完成后,动作创建者推送到挂载组件的主页。组件内容安装良好,但它在加载资产之前呈现,这是一个非常烦人的问题。我不确定为什么这只发生在单点登录重定向而不是其他两个验证过程中。
再次,我尝试添加条件渲染以显示加载图像,直到组件安装并更新状态,但这不起作用,因为我认为它没有考虑到 html 中的资产。
所以我的问题是是否有更好的方法让我有条件地呈现加载指示器,直到我可以确保资产加载到 html 中。
更新:我进入了 chrome 开发工具并验证了脚本标签已加载。所以基本上在刷新之前它不会处理 css...
【问题讨论】:
标签: javascript reactjs react-router react-redux