객체가 null로 전달 될 때 React 앱 충돌을 방지하는 방법

Jakub

내 React 앱에는 site라는 객체가 null 객체로 전달되는 상황이 있습니다. 이로 인해 앱이 충돌하고이를 처리하는 방법을 모르겠습니다. 사이트 개체는 특정 상황에서 null 일 수 있으므로 null 개체가 올 때 앱이 충돌하지 않도록해야합니다.

이 예가 있습니다

const Sites = ({
  isOpen,
  onClose,
  site,
  onChange: onChangeSelectedSite = () => {},
}) => {
  
  <CODE>
  const preparedSites = useMemo(
    () =>
      sites
        .sort(sortSiteSelection(site))
        .map(elm => {
          const arr = [
            elm.siteId,
            elm.city,
            elm.state,
            elm.country,
            elm.address,
            elm.status,
          ];
          if (nearestSites.length)
            arr.push(
              nearestSites.find(s => s.closestSiteId === elm.siteId).distance,
            );
          return arr;
        })
        .sort((a, b) => a[6] - b[6]),
    [sites, site, nearestSites],
  );
  
  <code>

}

위의 코드는 해당 줄에서 사이트 광고를 수신하는 .sortsite === null입니다.

사이트는 다음 상위에서 전달됩니다.

const SitesChangeButton = ({ site, onChange }) => {
  <code>
  <Sites
        site={site}
        isOpen={isOpenNew}
        onClose={onCloseNew}
        onChange={onChange}
      />
}

존재하는 사이트 객체는

{
   siteId,
   city,
   state,
   country,
   address,
   status,
}

객체가 명백한 것처럼 null이면 위의 항목이 null 인 것처럼 오류가 발생합니다.

더 자세한 정보를 표시해야하는 경우 댓글로 알려주세요.

제안 된 수정 사항으로 정렬 기능을 추가했지만 여전히 작동하지 않음

import { pipeSort } from '../fp';

const nameCompare = (x, y) => x.name.localeCompare(y.name);
const cityCompare = (x, y) => x.city.localeCompare(y.city);
const compareCountry = s => (x, y) => {
  if (!s) return 0;

  if (x.countryCode === s.countryCode && y.countryCode === s.countryCode)
    return 0;
  else if (x.countryCode === s.countryCode) return -1;
  else if (y.countryCode === s.countryCode) return 1;
  else return x.countryCode.localeCompare(y.countryCode);
};

export const sortSiteSelection = selectedSite => {
  if (!selectedSite) {
    console.log('NULL FROM SORT SITE');
    return 0;
  }
  pipeSort(compareCountry(selectedSite), nameCompare, cityCompare);
};
데이비드

처리 방법 은 값이 인 경우 null구성 요소가 수행 하려는 작업에 따라 다릅니다 null. 예를 들어 <Sites/>구성 요소가 전혀 렌더링되지 않아야하는 경우 다음과 같이 표시합니다.

const SitesChangeButton = ({ site, onChange }) => {
  <>
    {site &&
      <Sites
        site={site}
        isOpen={isOpenNew}
        onClose={onCloseNew}
        onChange={onChange}
      />
    }
  </>
}

또는 구성 요소를 표시하지만 다음 null을 반환 null하는 것과 같이 내부적으로 처리하도록 할 수 있습니다 preparedSites.

const preparedSites = useMemo(
  () => site ?
    sites.sort.....
    : null,
  [sites, site, nearestSites],
);

아니면 당신이 처리 할 것입니다 null내에서 sortSiteSelection(즉,이 정의되어 어디든지), 같은 :

if (site === null) {
  return () => 0; // all values have the same sort result
}

기본적으로, 이것은 어느 언어로든 프로그래밍 할 수있는 매우 일반적인 문장이라고 생각합니다. 처리 null위한 논리를 원하는 위치와 논리를 원하는대로 코드에 작성하는 것입니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Objective-c에서 응답자를 찾을 수 없을 때 앱이 충돌하지만 메시지가 nil 객체로 전송 될 때 충돌하지 않습니다. 왜 그런 겁니까?

분류에서Dev

é 및 기타 특수 문자가 URL로 전달 될 때 내 앱에서 충돌

분류에서Dev

객체가 배열로 푸시 될 때 새로운 빈 행 생성을 방지하는 방법

분류에서Dev

React Typescript-Route에서 전달 될 때 location.state에 유형을 추가하는 방법

분류에서Dev

null 값이 전달 될 때 빈 문자열을 설정하는 방법

분류에서Dev

모든 스크립트가 완전히로드 될 때까지 이미지 클릭을 방지하는 방법

분류에서Dev

앱 충돌을 방지하는 글로벌 방법?

분류에서Dev

Android에서 여러 개체가 JSON으로 전달 될 때 단일 개체를 필터링하는 방법

분류에서Dev

AccessViolationException이 감지 될 때 응용 프로그램 충돌을 강제하는 방법

분류에서Dev

객체가 시작될 때 클래스에 인수를 전달하는 방법은 무엇입니까?

분류에서Dev

하나가 null 일 때 앱 충돌을 일으키는 EditText

분류에서Dev

앱 충돌을 방지하는 방법

분류에서Dev

뒤로 키를 눌렀을 때 앱을 종료하는 대신 이전 화면으로 돌아가는 방법

분류에서Dev

객체가 포인터로 전달 될 때 범위를 벗어나지 만 반환 될 때가 아닌 이유

분류에서Dev

NSDrawer가 앱 창에 추가 될 때 충돌을 일으킴

분류에서Dev

String이 비어있을 때 앱 충돌을 중지하는 방법

분류에서Dev

인터넷에 연결되어 있지 않을 때 이미지를 업로드 할 때 앱 충돌을 방지하는 방법

분류에서Dev

Promise 객체가 배열 전에 반환 될 때지도 typerror를 수정하는 방법은 무엇입니까?

분류에서Dev

상태가 변경 될 때 useQuery가 실행되는 것을 방지하는 방법-React, Apollo, GraphQL

분류에서Dev

전체 UI가 표시 될 때 계산을 시작하는 방법

분류에서Dev

전체 UI가 표시 될 때 계산을 시작하는 방법

분류에서Dev

정리가 완료 될 때까지 전자 앱 종료 방지

분류에서Dev

충돌하는 블록으로 파이를 계산할 때 빠르게 움직이는 물체가 정적을 통과하는 것을 방지하는 방법

분류에서Dev

변수가 변경 될 때까지 앱이 대기하도록하는 방법

분류에서Dev

페이지 크기가 조정될 때 DIVS가 충돌하지 않도록하는 방법 (바닥 글)?

분류에서Dev

명령이 변수로 전달 될 때 명령 대체와 함께 stdout / stderr 리디렉션을 포함하는 방법은 무엇입니까?

분류에서Dev

뷰가로드 될 때 SystemJs 모듈을 실행하는 방법

분류에서Dev

프로젝트가 Gradle로 빌드 될 때 구현 버전을 얻는 방법

분류에서Dev

텍스트 상자를 떠날 때 프로그램이 충돌하는 것을 방지하는 방법 null C #

Related 관련 기사

  1. 1

    Objective-c에서 응답자를 찾을 수 없을 때 앱이 충돌하지만 메시지가 nil 객체로 전송 될 때 충돌하지 않습니다. 왜 그런 겁니까?

  2. 2

    é 및 기타 특수 문자가 URL로 전달 될 때 내 앱에서 충돌

  3. 3

    객체가 배열로 푸시 될 때 새로운 빈 행 생성을 방지하는 방법

  4. 4

    React Typescript-Route에서 전달 될 때 location.state에 유형을 추가하는 방법

  5. 5

    null 값이 전달 될 때 빈 문자열을 설정하는 방법

  6. 6

    모든 스크립트가 완전히로드 될 때까지 이미지 클릭을 방지하는 방법

  7. 7

    앱 충돌을 방지하는 글로벌 방법?

  8. 8

    Android에서 여러 개체가 JSON으로 전달 될 때 단일 개체를 필터링하는 방법

  9. 9

    AccessViolationException이 감지 될 때 응용 프로그램 충돌을 강제하는 방법

  10. 10

    객체가 시작될 때 클래스에 인수를 전달하는 방법은 무엇입니까?

  11. 11

    하나가 null 일 때 앱 충돌을 일으키는 EditText

  12. 12

    앱 충돌을 방지하는 방법

  13. 13

    뒤로 키를 눌렀을 때 앱을 종료하는 대신 이전 화면으로 돌아가는 방법

  14. 14

    객체가 포인터로 전달 될 때 범위를 벗어나지 만 반환 될 때가 아닌 이유

  15. 15

    NSDrawer가 앱 창에 추가 될 때 충돌을 일으킴

  16. 16

    String이 비어있을 때 앱 충돌을 중지하는 방법

  17. 17

    인터넷에 연결되어 있지 않을 때 이미지를 업로드 할 때 앱 충돌을 방지하는 방법

  18. 18

    Promise 객체가 배열 전에 반환 될 때지도 typerror를 수정하는 방법은 무엇입니까?

  19. 19

    상태가 변경 될 때 useQuery가 실행되는 것을 방지하는 방법-React, Apollo, GraphQL

  20. 20

    전체 UI가 표시 될 때 계산을 시작하는 방법

  21. 21

    전체 UI가 표시 될 때 계산을 시작하는 방법

  22. 22

    정리가 완료 될 때까지 전자 앱 종료 방지

  23. 23

    충돌하는 블록으로 파이를 계산할 때 빠르게 움직이는 물체가 정적을 통과하는 것을 방지하는 방법

  24. 24

    변수가 변경 될 때까지 앱이 대기하도록하는 방법

  25. 25

    페이지 크기가 조정될 때 DIVS가 충돌하지 않도록하는 방법 (바닥 글)?

  26. 26

    명령이 변수로 전달 될 때 명령 대체와 함께 stdout / stderr 리디렉션을 포함하는 방법은 무엇입니까?

  27. 27

    뷰가로드 될 때 SystemJs 모듈을 실행하는 방법

  28. 28

    프로젝트가 Gradle로 빌드 될 때 구현 버전을 얻는 방법

  29. 29

    텍스트 상자를 떠날 때 프로그램이 충돌하는 것을 방지하는 방법 null C #

뜨겁다태그

보관