Sobes.tech
Назад к вопросам
Middle+
2

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} />

Компании, где спрашивали
IT OneIT One

Ответ от нейросети

sobes.tech AI

Разберём по частям:

  1. const func = obj.sayHi() Здесь вызывается функция sayHi объекта obj и результат присваивается func. Если sayHi возвращает функцию, то func — функция, иначе — результат вызова.

  2. const boundFuns = func.bind(obj) Метод bind создаёт новую функцию с фиксированным контекстом this. Если func — функция, то boundFuns — та же функция, но с this, привязанным к obj.

  3. boundFuns() Вызов функции с привязанным контекстом.


  1. const submit = (el) => () => { log(el); } Это функция высшего порядка, которая принимает параметр el и возвращает функцию, которая при вызове логирует el. Используется для передачи обработчиков с параметрами.

  2. arr.map(el => <button onClick={submit(el)}/>) Для каждого элемента массива создаётся кнопка с обработчиком клика, который запомнит значение el через замыкание.


  1. const param = useMemo(() => a + b) Хук React useMemo мемоизирует результат вычисления a + b, чтобы не пересчитывать его при каждом рендере, если a и b не изменились.

  2. return <Child value={param} /> Передаём вычисленное значение в дочерний компонент.


Итог:

  • В первом примере важно, что bind фиксирует контекст this для функции.
  • Во втором — замыкания позволяют создавать обработчики с параметрами.
  • В третьем — useMemo оптимизирует производительность, предотвращая лишние вычисления и рендеры.