Javascript React上下文API与路由器
我试图将上下文API用于React路由器,但它并没有像我预期的那样工作 这是我的Container.js文件Javascript React上下文API与路由器,javascript,reactjs,Javascript,Reactjs,我试图将上下文API用于React路由器,但它并没有像我预期的那样工作 这是我的Container.js文件 从“React”导入React 从“react router dom”导入{Route,Switch}; 从“./Components/Home/Home”导入主页; 从“./Components/Create/Create”导入创建; 从“./Components/Login/Login”导入登录名; 从“./Context/googleIdContext”导入{GoogleIdCo
从“React”导入React
从“react router dom”导入{Route,Switch};
从“./Components/Home/Home”导入主页;
从“./Components/Create/Create”导入创建;
从“./Components/Login/Login”导入登录名;
从“./Context/googleIdContext”导入{GoogleIdContextProvider};
常量容器=()=>{
返回(
)
}
导出默认容器代码>使用路由器时,必须使用包含交换机和路由的路由器结构
使用路由器时,必须使用包含交换机和路由的路由器结构
您需要了解react路由器dom的工作原理:
我想错误在第四步。结果取决于您如何访问localhost:3000/home
如果您注册并将“jeong”放入上下文中,然后转到带有history.push(“/home”)的“/home”,它将按照您的预期正常工作
但如果您只需键入url localhost:3000/home,您将获得您现在拥有的内容
区别在于(1)中有导航时刻的上下文,但(2)中的上下文不仅仅存在:
要解决此问题,您必须在根组件中检查用户是否已注册,并将其数据放入您的上下文中,例如:
useEffect(() => {
const data = checkRegistration();
if (data.registered) {
setContext(data.userName)
}}, []);
您需要了解react路由器dom的工作原理:
我想错误在第四步。结果取决于您如何访问localhost:3000/home
如果您注册并将“jeong”放入上下文中,然后转到带有history.push(“/home”)的“/home”,它将按照您的预期正常工作
但如果您只需键入url localhost:3000/home,您将获得您现在拥有的内容
区别在于(1)中有导航时刻的上下文,但(2)中的上下文不仅仅存在:
要解决此问题,您必须在根组件中检查用户是否已注册,并将其数据放入您的上下文中,例如:
useEffect(() => {
const data = checkRegistration();
if (data.registered) {
setContext(data.userName)
}}, []);
我在index.js文件中导入了BrowserRouter。我在index.js文件中导入了BrowserRouter。