我是一名中文翻译助手,需要为您翻译与IT技术相关的内容。您需要将React/firebase应用程序中的私有路由设置正确,使用react-firebase-hooks/auth
中的{useAuthState}
进行身份验证。
应用程序:
let App = () => {
const [user] = useAuthState(auth);
return (
<Navbar
...
<a href="/user" />user</a>
...
/>
<Router>
<div className='main-content'>
<Route path='/auth/signin' component={Login} />
<ProtectedRoute path='/user' component={UserHome}
isAuth={user} />
..
};
受保护的路由:
const ProtectedRoute = ({ component: Component, isAuth, ...rest }) => {
return (
<Route
{...rest}
render={(props) =>
isAuth ? (
<Component {...props} />
) : (
<Redirect
to={{ pathname: "/user/signin", state: { from: props.location } }}
/>
)
}
/>
);
};
export default ProtectedRoute;
React会将组件渲染两次,在第一次渲染时props为空,这会触发受保护的路由重定向。 但在第二次渲染时,所有的props都已经就绪,但此时已经太晚了,重定向已经发生了。
是否可以在渲染或重定向之前等待所有props加载完成? 或者还有其他解决方法吗?
最好的祝福