我读了很多关于'history.push nginx react-router'的问题,但我没有找到解决我面临的问题的方法。
问题是,当我在登录组件中登录我的应用程序时,执行ajax调用后我会执行类似的操作:
cb = (res) => {
if (res.token!== null && res.token !== undefined){
localStorage.setItem("token",res.token);
localStorage.setItem("expiresIn",res.expiresIn);
localStorage.setItem("email", res.email);
**history.push('/home/0/0');**
}else{this.setState({errorTextMail:"wrong mail or wrong password!"})}}
在本地它可以正常工作但在控制台中history.push('/home/0/0')
会触发nginx无法处理的请求并返回404,但在我的浏览器中,应用程序登录我并且我没有看到错误。
相反,当我构建应用程序并将构建文件夹放在nginx下来提供静态文件时,当我尝试登录时,它会显示404页面。然后,如果我刷新页面(从网址中删除/home/0/0
)它工作正常,识别令牌并登录我,我可以浏览应用程序的其他路径。
我原本认为history.push会由react-router处理,只是更改相应<Route path="/home/:idOne/:idTwo" component={Home} />
组件映射的组件,而不是向nginx发送新请求。
我的问题是,当cb
函数返回我的令牌而不是使用history.push('/home/0/0')
时,有一种方法可以切换组件吗?
注意history
对象是以这种方式定义的
import history from './history';
和history.js的内容是:
import createHistory from 'history/createBrowserHistory'
export default createHistory({
forceRefresh: true
})
感谢您的任何建议。