내 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>
}
위의 코드는 해당 줄에서 사이트 광고를 수신하는 .sort
것 site === 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] 삭제
몇 마디 만하겠습니다