Kokios nustatymai yra cookie'ose (httpOnly, secure, expires, domain, path)?
Frontend
const createCounter = () => {
const func = obj.sayHi() const boundFuns = func.bind(obj) boundFuns() ------------------- const submit = (el) => () => { log(el); } arr.map(el => <button onClick={submit(el)}/>) const param = useMemo(() => a + b) return <Child value={param} />
Kaip suprantate, kas yra renderis React'e? Kodėl tai gali įvykti?
import React, { useState, useEffect, useRef, useContext, useReducer, useMemo } from 'react'; export default Effects = () => { const [count, setCount] = useState(0); useLayoutEffect(() => console.log("kiekvienas atvaizdavimas 1")); console.log("kiekvienas atvaizdavimas 2"); useEffect(() => console.log("kiekvienas atvaizdavimas 3")); return ( <> <button onClick={() => setCount((prevProps) => ++prevProps)}> Padidinti </button> </> ) }
const obj = [{ value: 1, elems: [ { value: 2, elems: [ { value: 3 }, { value: 6 }, ... ] }, { value: 4, elems: [ { value: 5, elems: [ { value: 6 }, ... ]} ] } ] }] ------------- setTimeout(() => { console.log(1); }, 0); const p = new Promise(resolve => { console.log(2); resolve(); }); p.then(() => { console.log(3) }).then(() => { console.log(4); }); console.log(5);
Ar turėjote patirties dirbant be analitiko, kai reikėjo pats suprasti užduotį?
Kas yra WeakMap?
const { foo: bar, bar: foo } = { foo: 1, bar: 2 } console.log(bar) // console.log(foo) //
Kaip React lygina props? Kaip veikia paviršiaus palyginimas?
const { foo: bar, bar: foo } = { foo: 1, bar: 2 }; //foo //bar setTimeout(() => { console.log("timeOut"); }, 0); console.log(1); new Promise((resolve) => { console.log("Promise"); setTimeout(() => { console.log("timeOut2"); resolve(); }, 0); }) .then(() => { console.log("then1"); }) .then(() => { console.log("then2"); }); console.log(4); setTimeout(() => { console.log("timeOut3"); }, 0);
Kam naudojamas useRef? Kokios yra jo taikymo sritys?
let obj = { a: 1 }; let array = [obj]; obj = null; console.log(obj); // console.log(array); //
Tipizuok funkciją getParam taip, kad TypeScript pats pažymėtų objekto savybes. Padaryk tipizaciją taip, kad būtų užkirstas kelias perduoti masyvus.
import { useState, useRef, useEffect } from "react"; const useDebugRender = ({props}) => { const prevProp = useRef(props) useEffect(() => { }, []) } const ParentComponent = () => { const [random, setRandom] = useState(0); // Prop kaip perduodama vaikų komponentui const [text, setText] = useState(""); // Prop kaip perduodama vaikų komponentui const createRandom = () => setRandom(Math.floor(Math.random() * 100)); const onTextChange = (e) => setText(e.target.value); const [count, setCount] = useState(0); const incrementCount = () => setCount((prev) => prev + 1); // Ši funkcija perduodama kaip Prop vaikų komponentui return ( <> <Count: {count} /> <input type="text" onChange={onTextChange} /> <button onClick={createRandom}>Sugeneruoti atsitiktinį</button> <div> <ChildComponent random={random} text={text} incrementCount={incrementCount} /> </div> </> ); }; export default ParentComponent;
const Effects = () => { const [count, setCount] = useState(0); useLayoutEffect(() => console.log("kiekvienas atvaizdavimas 1")); console.log("kiekvienas atvaizdavimas 2"); useEffect(() => console.log("kiekvienas atvaizdavimas 3")); return ( <> {count} <button onClick={() => setCount((prevProps) => ++prevProps)}> Padidinti </button> </> ); }; export default Effects; // 1 atvaizdavimas: // Po paspaudimo: const Effects = () => { const [count, setCount] = useState(0); const [number, setNumber] = useState(0); useEffect(() => { console.log(count); return () => { console.log(count); }; }); return ( <> {count} <button onClick={() => setCount((prevProps) => ++prevProps)}> Padidinti </button> </> ); }; export default Effects; // 1 atvaizdavimas: // 2 1 3 // Po paspaudimo: // 2 1 3 // null: // 2 1 3 // // 1: 1, 0 // +: 1, 2 // ++: 2, 2
const submit = useCallback((el) => () => { log(el); }, []); arr.map(el => <button onClick={submit(el)} />) arr.map(el => <SomeComp key={} onClick={() => submit(el)} />) const param = useMemo(() => ({c: a + b}), [a,b]) return <Child value={param} /> Child = React.memo(() => {})
Jei tėvų komponentas perduoda naują masyvą kaip props, ar matysite naujus duomenis ekrane ar senus? Kodėl?
Ar pakyla let ir const (hoisting)? Kas vyksta, kai prie jų prieinama prieš deklaravimą?
Kodėl naudoti debounce, o ne throttle paieškai?