Jakie statyczne metody Promise znasz? Opowiedz o nich.
Frontend
Napisz funkcję getUserProfile, która przyjmuje userId jako argument i pobiera profil użytkownika z punktu końcowego API "[link] Funkcja powinna zalogować profil użytkownika, jeśli pobieranie powiedzie się, i zalogować komunikat o błędzie, jeśli pobieranie się nie powiedzie.
import React, { useState, useEffect, useLayoutEffect } from 'react'; export default () => { const [count, setCount] = useState(0); useLayoutEffect(() => console.log("każde renderowanie 1")); console.log("każde renderowanie 2"); useEffect(() => console.log("każde renderowanie 3")); return ( <button onClick={() => setCount((prevProps) => ++prevProps)}> Zwiększ </button> ); } // montaż -> każde renderowanie 2, każde renderowanie 1, każde renderowanie 3 // aktualizacja -> każde renderowanie 2, każde renderowanie 1, każde renderowanie 3 // odmontowanie 4
Czym jest Set? Co możemy przekazać jako argument, wywołując new Set?
const S = { id: 1, name: "Ivan", age: "39", tel: [phone] }; function getParam(obj, key) { return obj[key]; } getParam(S, "tel"); getParam(S, "job");
Czy let i const (hoisting) są podnoszone? Co się dzieje, gdy odwołujemy się do nich przed deklaracją?
Napisz abstrakcyjną implementację komponentu Child z memoizacją przez React.memo. Jaki jest drugi argument, który przyjmuje React.memo?
Napisz, co się stanie podczas pierwszego renderowania — w jakiej kolejności wyświetlą się console.log. Co się stanie po kliknięciu?
Czym jest WeakSet?
import React, { useState, useEffect, useRef, useContext, useReducer, useMemo } from 'react'; const someFunc = (arr) => { return [...arr].sort((a, b) => a - b); }; const LazyInit = (props) => { const [arr, setArr] = useState(() => someFunc(props.arr)); const onClick = () => { setArr((prev) => prev.concat(prev.length + 1)); }; return ( <> <button onClick={onClick}> Increment </button> <ul> {arr.map((n, index) => <li key={index}>{n}</li>)} </ul> </> ); }; export default () => <LazyInit arr={[1, 2, 3]} />; --- Na prawej stronie omawia się: - Użycie TypeScript z generykami: "<T extends object, K extends keyof T>" - Sprawdzanie, czy dane są stringiem, za pomocą strażnika typu: "isString(data: unknown): data is string { ... }" - Użycie useState z funkcją, aby uniknąć ponownego uruchomienia przy każdym renderze: ``` const [state, setState] = useState(getComplexData); // lub const [state, setState] = useState(() => getComplexData()); ``` - Funkcja przekazana do useState będzie uruchomiona tylko raz podczas montowania komponentu. - Ostrzeżenie o bezpośredniej mutacji stanu w linii 11 z prev.concat. --- Zadanie techniczne polega na analizie i ewentualnym naprawieniu lub optymalizacji kodu komponentu React, ze szczególnym naciskiem na: - Prawidłową leniwą inicjalizację stanu za pomocą useState. - Unikanie bezpośredniej mutacji stanu. - Zrozumienie generyków TypeScript i strażników typu. - Zapewnienie, że komponent poprawnie aktualizuje stan po kliknięciu przycisku.
Czym jest zamknięcie?
Istnieją trzy źródła danych zwracające te same informacje. Jak uzyskać odpowiedź od najszybszego?
Jaka jest różnica między Map a WeakMap?
Opowiedz o hooku useState w React.
Dlaczego nie można używać funkcji strzałkowych z konstruktorem new?
Jak tworzone są funkcje w JavaScript? Jakie są sposoby tworzenia funkcji i czym się różnią?
Jakie utilitarne typy TypeScript używasz w pracy? Opowiedz o Record, Pick, Omit, Partial, Required, Parameters, Exclude, Extract.