React · Senior · Pytanie 60 z 75
Dlaczego <ExpensiveTree /> nie renderuje się tu ponownie, gdy zmienia się stan ColorPicker?
function ColorPicker({ children }) {
const [color, setColor] = useState("red");
return <div style={{ color }}>{children}</div>;
}
// <ColorPicker><ExpensiveTree /></ColorPicker>- ✓Poprawna odpowiedź:
childrenutworzył rodzic, więc przy ponownym renderzeColorPickerelement jest tym samym obiektem - 2React nigdy nie renderuje ponownie
children - 3
stylezapobiega ponownym renderom
Wyjaśnienie
Przekazywanie JSX jako children („podnoszenie treści w górę”) to optymalizacja bez memo: tylko rodzic, który utworzył element, decyduje, kiedy się zmienia.