React 오류 경계가 호출되지만 렌더링되지 않습니다.

조립식 쇠지레

복제를 위해이 코드 및 상자를 참조하십시오

앱을 /error경로로 리디렉션하는 오류 경계를 만들었습니다 . 그러나 때때로 오류가 발생하면 (버그 페이지 링크를 클릭하여 코드와 상자의 경우) 오류 경계가 호출되고 브라우저가 /error경로 로 리디렉션 되지만 표시되어야하는 구성 요소가 표시 /error되지 않습니다. 렌더링하고 대신 흰색 화면이 표시됩니다. 무엇이 잘못되었으며, 오류 경계가 호출되어 브라우저를 리디렉션하지만 렌더링이 완료되지 않는 이유는 무엇입니까? 감사!

index.js :

import React from "react";
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
import { render } from "react-dom";
import ErrorBoundary from "./errorBoundary";
import "./index.css";

const App = () => (
  <div>
    <nav>
      <ul>
        <li>
          <Link to="/">Home</Link>
        </li>
        <li>
          <Link to="/bug">Page with Bug</Link>
        </li>
      </ul>
    </nav>
    <Switch>
      <Route path="/bug">
        <BugPage />
      </Route>
      <Route path="/error">
        <ErrorPage />
      </Route>
      <Route path="/">
        <HomePage />
      </Route>
    </Switch>
  </div>
);

const HomePage = () => <h1>Home Page</h1>;

const ErrorPage = () => <h1>This is the error boundary</h1>;

const BugPage = () => {
  const dummyData = {
    foo: {
      id: 1
    }
  };

  return <h1>{dummyData.bar.id}</h1>;
};

const Spa = () => (
  <Router>
    <ErrorBoundary>
      <App />
    </ErrorBoundary>
  </Router>
);

render(<Spa />, document.getElementById("root"));

errorBoundary.js :

import * as React from "react";
import { withRouter } from "react-router-dom";

export class ErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      hasError: false,
      hasRedirected: false
    };
  }

  componentDidCatch(error) {
    this.setState({ hasError: true });
  }

  render() {
    if (this.state.hasError) {
      this.props.history.push("/error");
    }
    return this.props.children;
  }
}

export default withRouter(ErrorBoundary);
안토니

나는 componentDidCatch()당신의 리디렉션을 호출 하는 사용 합니다.

componentDidCatch(error) {
  this.props.history.push('/error');
}

그런 함수를 호출하는 render()것이 유효한지 확실 하지 않지만 다음과 같이 할 수도 있습니다.

render() {
  return this.state.hasError ? <SomeErrorComponent /> : this.props.children;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Spring 양식 : 오류가 렌더링되지 않습니다.

분류에서Dev

React Native : 이미지가 렌더링되지 않습니다.

분류에서Dev

상태 변경 후 React 구성 요소가 다시 렌더링되지 않지만 render ()가 호출 됨

분류에서Dev

Laravel 7 + React 렌더링 오류 : 렌더링에서 아무것도 반환되지 않았습니다.

분류에서Dev

React 구성 요소가 렌더링되지 않습니다.

분류에서Dev

React Router getIndexRoute가 렌더링되지 않습니다.

분류에서Dev

상태가 변경 될 때 React가 다시 렌더링되지 않습니다.

분류에서Dev

react-router 링크가 URL을 변경하지만 Route 구성 요소가 렌더링되지 않습니다.

분류에서Dev

ReactJS-react-router 중첩 경로가 렌더링되지 않았습니다.

분류에서Dev

React에서 API의 데이터를 렌더링 할 수 없습니다. 오류가 표시되지 않습니다.

분류에서Dev

React는 상태 변경시 다시 렌더링되지 않습니다.

분류에서Dev

Store 변경시 React Redux가 다시 렌더링되지 않음

분류에서Dev

URL 변경시 페이지를 다시로드하지 않으면 React가 렌더링되지 않습니다.

분류에서Dev

React.js가 렌더링되지 않습니까?

분류에서Dev

React, gatsbyjs : 객체 루핑-구성 요소가 렌더링되지 않습니다.

분류에서Dev

React Custom 구성 요소가 예상대로 렌더링되지 않습니다.

분류에서Dev

React Project에서 데이터가 화면에 렌더링되지 않습니다.

분류에서Dev

React 서버 측 렌더링 ReferenceError : 문서가 정의되지 않았습니다.

분류에서Dev

React & Firebase + Flux : 하위 구성 요소가 렌더링되지 않습니다.

분류에서Dev

React.js가 내 Codepen에서 렌더링되지 않습니다.

분류에서Dev

React Router V4-페이지가 변경된 경로에서 다시 렌더링되지 않습니다.

분류에서Dev

소품이 변경되면 React Native 구성 요소가 다시 렌더링되지 않습니다.

분류에서Dev

콜백 함수의 React 구성 요소가 호출되지 않고 오류가 발생하지 않습니다.

분류에서Dev

Mobx-React React가 다시 렌더링되지 않음

분류에서Dev

REACT.JS 경로가 렌더링되지 않음

분류에서Dev

오류 메시지가 렌더링되지 않습니다. | URL 유효성 검사

분류에서Dev

Angular Chart는 렌더링되지 않지만 개발 도구는 오류가 없다고 말합니다.

분류에서Dev

함수가 호출되지만 렌더링이 수행되지 않음

분류에서Dev

VueJs [Vue 경고] : 렌더링 오류 : "TypeError : 정의되지 않은 'title'속성을 읽을 수 없습니다."

Related 관련 기사

  1. 1

    Spring 양식 : 오류가 렌더링되지 않습니다.

  2. 2

    React Native : 이미지가 렌더링되지 않습니다.

  3. 3

    상태 변경 후 React 구성 요소가 다시 렌더링되지 않지만 render ()가 호출 됨

  4. 4

    Laravel 7 + React 렌더링 오류 : 렌더링에서 아무것도 반환되지 않았습니다.

  5. 5

    React 구성 요소가 렌더링되지 않습니다.

  6. 6

    React Router getIndexRoute가 렌더링되지 않습니다.

  7. 7

    상태가 변경 될 때 React가 다시 렌더링되지 않습니다.

  8. 8

    react-router 링크가 URL을 변경하지만 Route 구성 요소가 렌더링되지 않습니다.

  9. 9

    ReactJS-react-router 중첩 경로가 렌더링되지 않았습니다.

  10. 10

    React에서 API의 데이터를 렌더링 할 수 없습니다. 오류가 표시되지 않습니다.

  11. 11

    React는 상태 변경시 다시 렌더링되지 않습니다.

  12. 12

    Store 변경시 React Redux가 다시 렌더링되지 않음

  13. 13

    URL 변경시 페이지를 다시로드하지 않으면 React가 렌더링되지 않습니다.

  14. 14

    React.js가 렌더링되지 않습니까?

  15. 15

    React, gatsbyjs : 객체 루핑-구성 요소가 렌더링되지 않습니다.

  16. 16

    React Custom 구성 요소가 예상대로 렌더링되지 않습니다.

  17. 17

    React Project에서 데이터가 화면에 렌더링되지 않습니다.

  18. 18

    React 서버 측 렌더링 ReferenceError : 문서가 정의되지 않았습니다.

  19. 19

    React & Firebase + Flux : 하위 구성 요소가 렌더링되지 않습니다.

  20. 20

    React.js가 내 Codepen에서 렌더링되지 않습니다.

  21. 21

    React Router V4-페이지가 변경된 경로에서 다시 렌더링되지 않습니다.

  22. 22

    소품이 변경되면 React Native 구성 요소가 다시 렌더링되지 않습니다.

  23. 23

    콜백 함수의 React 구성 요소가 호출되지 않고 오류가 발생하지 않습니다.

  24. 24

    Mobx-React React가 다시 렌더링되지 않음

  25. 25

    REACT.JS 경로가 렌더링되지 않음

  26. 26

    오류 메시지가 렌더링되지 않습니다. | URL 유효성 검사

  27. 27

    Angular Chart는 렌더링되지 않지만 개발 도구는 오류가 없다고 말합니다.

  28. 28

    함수가 호출되지만 렌더링이 수행되지 않음

  29. 29

    VueJs [Vue 경고] : 렌더링 오류 : "TypeError : 정의되지 않은 'title'속성을 읽을 수 없습니다."

뜨겁다태그

보관