history.push在react路由器中触发新请求,nginx返回404

时间:2017-08-29 09:59:54

标签: nginx react-router browser-history

我读了很多关于'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
})

感谢您的任何建议。

0 个答案:

没有答案