Реагирует на сравнение Javascript в операторе return

#javascript #reactjs

#javascript #reactjs

Вопрос:

Я создаю веб-приложение в react js и следую этим руководствам: https://www.youtube.com/watch?v=PKwu15ldZ7kamp;t=2002s может ли кто-нибудь объяснить мне этот фрагмент кода?

 return currentUser ? <Outlet /> : <Navigate to="/login" />;
 

Я понимаю, что если CurrentUser имеет значение null, то он перенаправляется на login . Есть ли способ заставить его возвращать другую страницу, если не null?

Ответ №1:

Этот фрагмент кода return currentUser ? <Outlet /> : <Navigate to="/login" />; называется троичным оператором. Другими словами, если CurrentUser имеет значение true, то верните компонент Outlet, в противном случае верните компонент Navigate. Это сокращенный способ написания оператора if / else .

Вот больше о троичных операторах: MDN Web Docs: троичный оператор

Если вы хотите, чтобы он перенаправлял на другой URL-адрес, когда он возвращает компонент Navigate, вы просто изменили /login его на любой URL-адрес, который хотите загрузить в null /someOtherURL

Ответ №2:

По сути, это однострочный оператор if . Он гласит:

 if (currentUser) { // If currentUser is different than undefined/null/false
  return <Outlet />
} else {
  return <Navigate to="/login" />
}
 

На этом этапе вы можете выбрать возврат чего угодно в любом случае. Вы можете перенаправить на любую имеющуюся у вас страницу, вы можете вернуть любые другие компоненты и т.д.

Комментарии:

1. Спасибо, это имеет смысл.