React · Senior · Pytanie 53 z 75
Dlaczego ten komponent zawiesza się na zawsze (lub w kółko pobiera dane)?
function Profile({ id }) {
const user = use(fetch(`/api/users/${id}`).then((r) => r.json()));
return <h1>{user.name}</h1>;
}- ✓Poprawna odpowiedź: Przy każdym renderze tworzony jest nowy promise;
usepotrzebuje zcache'owanego/stabilnego promise'a (z frameworka, cache'u lub od rodzica) - 2
usenie można wywoływać w komponentach klienckich - 3
fetchjest niedozwolony wewnątrzuse
Wyjaśnienie
Po zawieszeniu React ponownie renderuje komponent, który tworzy kolejny promise. Przekaż promise z Server Component, biblioteki danych lub cache'u kluczowanego po id.