React · Senior · Запитання 60 з 75
Чому <ExpensiveTree /> тут не перерендерюється за зміни стану ColorPicker?
function ColorPicker({ children }) {
const [color, setColor] = useState("red");
return <div style={{ color }}>{children}</div>;
}
// <ColorPicker><ExpensiveTree /></ColorPicker>- ✓Правильна відповідь:
childrenстворив батько, тому під час перерендераColorPickerелемент - той самий об'єкт - 2React ніколи не перерендерює
children - 3
styleзапобігає перерендерам
Пояснення
Передавання JSX через children («підняття контенту вгору») - оптимізація без memo: лише батько, що створив елемент, вирішує, коли він змінюється.