Kokius statinius Promise metodus žinote? Papasakokite apie juos.
Frontend
Parašykite funkciją getUserProfile, kuri priima userId kaip argumentą ir gauna naudotojo profilį iš API galinio taško "[link]". Funkcija turėtų įrašyti naudotojo profilį, jei fetch sėkmingas, ir įrašyti klaidos pranešimą, jei fetch nepavyksta.
import React, { useState, useEffect, useLayoutEffect } from 'react'; export default () => { const [count, setCount] = useState(0); useLayoutEffect(() => console.log("kiekvienas renderis 1")); console.log("kiekvienas renderis 2"); useEffect(() => console.log("kiekvienas renderis 3")); return ( <button onClick={() => setCount((prevProps) => ++prevProps)}> Padidinti </button> ); } // montavimas -> kiekvienas renderis 2, kiekvienas renderis 1, kiekvienas renderis 3 // atnaujinimas -> kiekvienas renderis 2, kiekvienas renderis 1, kiekvienas renderis 3 // nuėmimas 4
Kas yra Set? Ką galime perduoti, kai kviečiame 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");
Ar pakyla let ir const (hoisting)? Kas vyksta, kai prie jų prieinama prieš deklaravimą?
Parašykite abstrakčią Child komponento realizaciją su memoizacija per React.memo. Koks yra antrasis argumentas, kurį priima React.memo?
Parašykite, kas įvyks pirmojo atvaizdavimo metu — kokia tvarka bus išvedami console.log. Kas bus po paspaudimo?
Kas yra 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]} />; --- Dešinėje pusėje vyksta diskusija apie: - TypeScript naudojimą su generikais: "<T extends object, K extends keyof T>" - Tikrinimą, ar duomenys yra eilutė, naudojant tipo sargą: "isString(data: unknown): data is string { ... }" - useState naudojimą su funkcija, siekiant išvengti pakartotinio vykdymo kiekviename render: ``` const [state, setState] = useState(getComplexData); // arba const [state, setState] = useState(() => getComplexData()); ``` - Funkcija, perduodama į useState, bus vykdoma tik kartą komponento montavimo metu. - Įspėjimas apie tiesioginį būsenos keitimą 11 eilutėje su prev.concat. --- Techninis uždavinys – analizuoti ir galbūt pataisyti arba optimizuoti React komponento kodą, ypač: - Tinkamai lazy inicializacija su useState. - Vengti tiesioginio būsenos keitimo. - Suprasti TypeScript generikus ir tipo sargus. - Užtikrinti, kad komponentas teisingai atnaujintų būseną paspaudus mygtuką.
Kas yra uždarymas?
Yra trys duomenų šaltiniai, kurie grąžina tą pačią informaciją. Kaip gauti atsakymą iš greičiausio?
Kuo skiriasi Map ir WeakMap?
Papaskink apie useState hook'ą React'e.
Kaip kuriamos funkcijos JavaScript'e? Kokie yra būdai kurti funkcijas ir kuo jie skiriasi?
Kodėl negalima dirbti su nauju konstruktoriu su rodyklės funkcijomis?
Kokius naudingus TypeScript tipus naudojate savo darbe? Papasakok apie Record, Pick, Omit, Partial, Required, Parameters, Exclude, Extract.