В React.js, как показать страницу «Не найдено», если сетевой запрос возвращает статус 404 в componentDidMount ()? - PullRequest
0 голосов
/ 30 марта 2019

У меня есть Route для обработки неизвестных URL, и Route отлично работает и прекрасно отображает PageNotFound. Но у меня другой сценарий, здесь у меня есть компонент Profile, где при монтировании компонента я должен отправить ajax-запрос на сервер для получения профиля пользователя.
Например, если URL-адрес http://localhost:3007/profile/theCoder, ajax-запрос будет отправлен на сервер http://localhost:8085/api/v1/profiles/theCoder. Обычные вещи, которые делает каждый веб-сайт, но я хочу знать, как показать страницу 404, т.е. PageNotFound компонент, если ajax возвращает 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...