在React.js中,如果网络请求在componentDidMount()中返回404状态,如何显示“未找到”页面?

时间:2019-03-30 18:01:33

标签: javascript reactjs react-router-v4

我有Route可以处理未知的URL,并且Route可以正常工作并完美呈现PageNotFound。但是,我有另一种情况,这里有一个Profile组件,在组件安装时,我必须向服务器发送ajax请求以获取用户的个人资料。
例如,如果URL为http://localhost:3007/profile/theCoder,则ajax请求将发送到服务器http://localhost:8085/api/v1/profiles/theCoder。每个网站都在执行的常规操作,但是我想知道如果ajax返回PageNotFound时如何显示404页面,即404 status组件?意味着theCoder用户不存在吗? 我使用history.push("/some-wrong-route")处理了该问题,这将呈现PageNotFound,但浏览器URL也更改为http://localhost:3007/profile/some-wrong-route

我不想要这个,我希望我的应用程序像其他网站一样正确运行。它们保留相同的URL,但呈现PageNotFound。

class Profile extends React.Component {

  componentDidMount() {
    const responsePromise = fetchUserProfileMinimal(this.props.match.params.id);
    responsePromise
      .then(({ data }) => {
           //do something
        })
      .catch(err => {
        this.props.history.push("/hello");
      });
  }

  render(){
     return{
        <div>.....</div>
     }

  }

路线:

<Route component={PageNotFound} />
<Route path="/profile/:id" component={Profile} />

enter image description here

0 个答案:

没有答案