Search
Write a publication
Pull to refresh

Comments 7

GC не вешается от такого "эффективного процесса"?

Выглядит как лишняя обёртка. При необходимости лучше сделать модуль типа arrayUtils.ts, в который вынести пару-тройку замороченных функций обработки массивов. Которые учитывают бизнес-специфику задач.

А пуш-ремув-фильтр можно as is по месту писать.

P.S. "по-новому" пишется через дефис, не пробел.

Уж если выносите логику в кастомный хук, то настоятельно рекомендую оборачивать колбэки в useCallback, так как при вызове, например, в useEffect, увижу красивую надпись в консоли "maximum update depth exceeded"

Колбэки, возвращаемые из хуков, должны иметь стабильную ссылку - а не как здесь

в целом тоже согласен что overengineering и плюс нет типизации проверки на то что default value действительно массив , то есть если я передам что-то отличное от массива , все сломается

во-первых зачем function? контекст не используется, а значит function не нужны и присутствуют по привычке/велению левой пятки.

во-вторых функция update выглядит ужасно. вместо

function update(index, newElement) {
setArray(a => [
...a.slice(0, index),
newElement,
...a.slice(index + 1, a.length),
])
}

можно использовать

function update(index, newElement) {
  const newArray = [...array];
  array[index] = newElement;
  setArray(newArray);
}

выглядит компактнее, один спред вместо двух, ноль методов slice. предположу возражение, что "а вот если там, в массиве, ссылочные данные, то мы и в изначальном массиве мутируем элемент со всем его содержимым, так нельзя!" - почему? можно что угодно делать с массивом в стейте - реакт на это никак не отреагирует, пока ссылка на этот массив не поменяется. в общем будто бы рановато автору оригинала показывать миру свои прекрасные хуки

Sign up to leave a comment.

Articles