Size: a a a

React: русскоязычное сообщество

2021 March 15

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
У кеша все равно есть стратегия инвалидации, так что почистить не проблема
источник

GE

Gez Ellig in React: русскоязычное сообщество
Danila Nikonets
тоже, чем плох объект?
Минус дополнительный код для очистки
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Все осложняет то, что ключем в WeakMap выступает объект. Если у вас все равно есть какой-то объект, который может устареть и быть вытеснен, то логично писать кешируемые данные сразу в него
источник

GE

Gez Ellig in React: русскоязычное сообщество
Юра Чеботаев
У кеша все равно есть стратегия инвалидации, так что почистить не проблема
Так, пока не особо понимаю
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Gez Ellig
Минус дополнительный код для очистки
Ну вот это разве что
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Но так-то там с десяток строчек, не велика экономия
источник

GE

Gez Ellig in React: русскоязычное сообщество
Эхэх, а я то думал, что жто супер тайное знание))
источник

GE

Gez Ellig in React: русскоязычное сообщество
Спасибо за разъяснения))
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Я на WeakMap-е писал хешер функций
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Функция — примитив, писать в нее как-то не комильфо
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А задача состоит в том, чтобы сопоставить каждой функции одно число
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
В результате проверки числа понимается та же самая эта функция или нет
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Принцип примерно такой:


const cbk = useCallback(() => {}, [foo])

weakMap.get(cbk)
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Если для функции возвращается одно и то же число при ререндерах, то это одна и та же функция
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Вот полный код:
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
export const createFunctionHasher = () => {
 const hashes: WeakMap<Function, number> = new WeakMap()
 let count = 1

 return (fn: Function): number => {
   let hash = hashes.get(fn)

   if (hash == null) {
     hash = count++
     hashes.set(fn, hash)
   }

   return hash
 }
}
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
источник

FA

Fedorchuk Artem in React: русскоязычное сообщество
Всем привет!
подскажите пожалуйста как оптимизировать такой кейс.
Работаю с api sec.gov, реализован поиск по названиям компаний и прочему, мы разово получаем весь список компаний в виде массива обьектов в размере 11000 обьектов, поиск реализован на основе material ui, autocomplete
При вводе в инпут вылетают ниже списком найденые варианты, все работает, но работает с задержкой, так как фильтр бежит по всем 11000 обьектам и смотрит совпадения.
Как можно решить проблемму задержки с таким большим обьемом данных?
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
В доке material-ui есть пример с виртуализацией
источник