Амаль
можно реакт чат?)))
andrei
@react_js
Амаль
спасиб
andrei
Fluffy Cat
я уже туда хочу
andrei
@frp_ru
Fluffy Cat
недавно протирал пыль с извилин и пытался понять как эффективнее бороться с коллизиями в хеш-таблице
Fluffy Cat
и как эффективнее работать с деревом для обновления
Fluffy Cat
если кому-то интересно и есть прекрасные набросы, будет увлекательно
JE$U$
Подписывайтесь на канал
JE$U$
JE$U$
JE$U$
Обучение is с нуля
JE$U$
https://t.me/frontendpower
Амаль
друг а тебе не лень зажимать кнопку микрофона? столько записей...
Дима
hash trie, точнее
Дима
Но это реально voodoo magic
Богдан
Подскажите пожалуйста, поведение интерпретатора. есть объект var obj = { "a": { "b": { "c": { "d": { "e": "VALUE" } } } } } например нужно часто обращаться к d свойству 1 это свойство можно выделить в ссылку var d1 = obj.a.b.c.d; 2 можно обращаться без переменной d1, а напрямую obj.a.b.c.d и все это в циклах, условиях и тд вопрос: как это повлияет на производительность, если работать через 2 метод? будут ли задержки, изза постоянного вычисления адреса свойства в памяти?
V8 умеет вычислять инварианты в цикле (типа скрыто сам выносить неизменяемые данные во временные переменные за пределы цикла) так что тут ответ какой код быстрее неясен. Более того своими явными действиями якобы по оптимизации можно наоборот замедлить код (типичный пример - выносить вычисление длины массива во временную переменную в цикле for(var i = 0; i < arr.length; i++) - http://mrale.ph/blog/2014/12/24/array-length-caching.html Но определенно точно можно заказать одно - возьми ноду, добавь флаг --print-opt-code и по выводу ассемблера можно четко определить какой код более производительней чем другой (типа здесь в цикле в первом варианте больше операций чем во втором, что вот там есть вызов рантайма а там нет и т.д)
Anonymous
Ребзя
Anonymous
А пустой массив - false?
Anonymous
Если в if его закинуть
Dika
Нет
Igor
Есть 2 массива с объектами, нужно пройтись по ним и понять, что добавилось в 1ый массив, а что удалилось, и эти изменения как-то сохранить, при удалении можно хранить айди, при добавлении весь объект, потом есть результирующий массив, там эти данный отформатированные, нужно в ней так же удалить, если удалилось и добавить, если добавилось, как лучше сделать?
Rafael 🌵
почему ты не можешь просто заменить второй массив перывым?
Igor
потому что какие-то элементы могут быть отредактированы в массиве content (результирующий)
Igor
добавление сделал
Igor
deletedFiles = s_.files.filter(fileState => fileState.id !== files.map(file => file.id));
Igor
пытаюсь понять какой файл был удален
Rafael 🌵
Rafael 🌵
карочи, закинь данные в песочнику
Rafael 🌵
?песочницу
Igor
не актуально
Андрей
алоха
Андрей
подскажите как грамотно в стеке React, Redux (+LocalStorage), React-Router, BrowserHistory перехватывать переход назад? > суть такова: для одного из экранов нужно реализовать восстановление всех значений полей, при переходе назад
Nick
подскажите как грамотно в стеке React, Redux (+LocalStorage), React-Router, BrowserHistory перехватывать переход назад? > суть такова: для одного из экранов нужно реализовать восстановление всех значений полей, при переходе назад
Да особо ничего не надо делать. Просто храните данные формы в редаксе. При рендере компонента формы - проверяйте есть ли эти данные в сторе и мапьте их в коннекте
Андрей
пока мысль такая: в компоненте этого экрана в constructor поставить что-то вроде window.onpopstate = ({state: {a, b}}) => if (location==='blabla') self.setState({a, b}) а в компоненте следующего экрана, с которого будет переход назад в constructor поставить что-то вроде window.onpopstate = () => if (location='blabla') history.replaceState({a:1, b:2})
Андрей
мне не нужны эти данные вечно. только в случае перехода назад
Azein
костыльно выглядит
Azein
если ты уже используешь редакс - зачем что-то хранить еще там где то
Azein
лишний раз отслеживать и так далее
Андрей
костыльно выглядит
полностью согласен
Андрей
если ты уже используешь редакс - зачем что-то хранить еще там где то
потому что стор в локалсторадж. а мне поля нужны пустыми, если страница просто открыта (например на отдельной вкладке)
Nick
Ладно, Андрей. Я дам вам один сумашедший совет
Андрей
(: давай
Nick
Запихните их в location.state
Nick
Звучит странно, но может прокатить
Андрей
пробовал
Андрей
оно всегда пустое при монтировании компонентов
Андрей
или я его как-то оне так готовлю
Anonymous
Еще раз. Почему 'first catch' отрабатывает, а 'second catch' нет?
Nick
или я его как-то оне так готовлю
Ну, сложно сказать. Но я бы на вашем месте сохранил все стор. Собственно я так и делаю. Если данные не нужны - удаляйте их после того, как пользователь уйдет с следующей страницы (с которой вы хотите возвращаться назад)
Андрей
а если он с третьей вернётся на второую а потом а первую:
Андрей
?
Nick
а если он с третьей вернётся на второую а потом а первую:
Это значит, что данные формы нужны вам всегда
Nick
Зачем усложнять?
Nick
Если у вас там не мегабайты джейсона
Андрей
нет. мне они не нужны на другой вкладке. мне они не нужны при переходе на этот экран по ссылке. мне они не нужны при закрыти вкладки, а потом переходе на этот экран через поисковик / закладки / tc
Anonymous
Андрей
localstorage будет глобальным у всех вкладок, он будет восстанавливаться в другом сеансе и т.п.
Nick
Ну при ошибке нет
А вы можете не хранить их в ЛС, а просто в редакс стор засунуть?
Андрей
мне нужны эти данные только при переходах назад
Nick
А, сори. Миссклик
Azein
раз они не нужны на другой вкладке
Azein
че бы в редакс сторе не хронить
Azein
не в локалсторедже
Андрей
хм.. похоже могу (: как-то не подумал что часть стора может быть слинкована с ЛС а часть нет
Nick
Ну при ошибке нет
Единственно объяснение, которое пришло в голову: У вас вызывается первый then, там происходит либо реджект, либо резолв промиса. Потом вы попадаете в катч, и делаете реджект, но промис уже выполнен и это ничего не дает
Azein
ну так то веселее чем в переменной окна шатать что то
Андрей
я и храню всё в редакс сторе, он через persistState слинкован с ЛС
Nick
Что? Это мне?
И получается, что из первого catch вы возвращаете undefined, а это не что и иное как Promise.resolve(undefined)
Андрей
всем спасибо (;
Nick
Что? Это мне?
Попробуй сделать так .then(response => response.data.ok ? Promise.resolve(this.succ...) : Promise.reject(this.error..) ) .then(resolve, reject)