程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了有没有办法在身份验证状态得到解决之前停止加载反应应用程序?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决有没有办法在身份验证状态得到解决之前停止加载反应应用程序??

开发过程中遇到有没有办法在身份验证状态得到解决之前停止加载反应应用程序?的问题如何解决?下面主要结合日常开发的经验,给出你关于有没有办法在身份验证状态得到解决之前停止加载反应应用程序?的解决方法建议,希望对你解决有没有办法在身份验证状态得到解决之前停止加载反应应用程序?有所启发或帮助;

我正在加载一个具有根组件 App.Js 的 React 应用程序,它通过中央 redux 存储确定是否存在经过身份验证的用户,但问题是它需要几分之一秒才能解决。在那之前,即使用户已登录,用户也会看到登录页面的闪现,我确信这会被视为糟糕的用户体验。有没有办法在状态解决之前不显示任何内容。我附上了一个代码片段。

function App(props) {
  const cookies = new cookies();
  const { user } = props;
  if (cookies.get("authToken") === "null" || cookies.get("authToken") === undefined) {
    //console.log("no valID token");
  } else {
    if (user === null) {
      props.fetchLoggedInUser(cookies.get("authToken"));
    }
  }

  const isLoggedIn = user ? (
    <div classname="App s12 l12 m12">
      <Navbar user={user}/>
      <Switch>
        <Route exact path="/" component={() => (<Home user={user} />)}></Route>
        <Route exact path="/create_blog" component={() => (<CreateBlog user={user} />)}></Route>
        <Route exact path="/edit_profile" component={() => (<EditProfile user={user} />)}></Route>
      </Switch>
    </div>
  ) : (
    <div classname="App">
      <Navbar user={null}/>
      <Switch>
        <Route exact path="/" component={() => (<Home user={null} />)}></Route>
        <Route exact path="/log_in" component={LogIn}></Route>
        <Route exact path="/sign_up" component={SignUp}></Route>
      </Switch>
    </div>
  );

  return (
    <browserRouter>
      {isLoggedIn}
    </browserRouter>
  );
}

const mapStatetoProps = (statE) => {
  return {
      authError: state.auth.authError,token: state.auth.token,user: state.auth.user
  }
}

const mapdispatchtoprops = (dispatch) => {
  return {
    fetchLoggedInUser: (token) => dispatch(fetchLoggedInUser(token))
  }
}

export default connect(mapStatetoProps,mapdispatchtoprops)(App);

解决方法

创建一个状态变量 isLoading(或您想要的任何名称)。将其初始值设置为 true。

if (isLoading) {
    return '';
} else {
  return (
  <BrowserRouter>
    {isLoggedIn}
  </BrowserRouter>
 );
}

获得 isLoggedIn 的值后,您可以将 isLoading 设置回 false 并且 react 将重新渲染。

大佬总结

以上是大佬教程为你收集整理的有没有办法在身份验证状态得到解决之前停止加载反应应用程序?全部内容,希望文章能够帮你解决有没有办法在身份验证状态得到解决之前停止加载反应应用程序?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。