Size: a a a

Elm Lang сообщество разработчиков

2021 August 23

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
там еще есть способы другие с инкрементальным рендерингом.. но их я не понимаю
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Именно это позволяет делать "один код на сервере и клиенте", например. Потому что до шага, на котором делается финальная обработка, разметка-как-данные могут ходить в общем коде.
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Как-то довелось поработать с одним индусом, который в редюсере на каждое изменение делал что-то вроде

const newState = _.cloneDeep(state)
newState.abc = 'Hello there'
return newState

редюсеры конечно стало куда легде писать, никаких тебе заморочек )) Только все недоумевали, а чего оно так лагает то ))))
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Ну вот эти вот спреды в JS вместо мутирования объектов — такое же защитное копирование
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
ну не совсем... спреды делают structural sharing где болшая часть старой структуры переиспользуется и остается еквивалентной по ссылке... а в случае с cloneDeep мы во первых на саму эту операцию тратим куча памяти и времени, а потом еще вдом начинает пересчитывать вообще весь мир... а если такие операции происходят скажем 5 раз в секуну - считай все, приложение не юзабельно
источник

K

Kir in Elm Lang сообщество разработчиков
> спреды делают structural sharing где болшая часть старой структуры переиспользуется и остается еквивалентной по ссылке

Ещё лучше. То есть, после 10 апдейтов, объект превращается в цепочку из 10 дельт?
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
ээээ кажется мы потеряли нить ))) Сейчас мы говорим уже про реакт с редуксом )
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
{ ...state, abc: 'Hello there' } и const newState = _.cloneDeep(state); newState.abc = 'Hello there' только на непосвященный взгляд кажется одним и тем же, на деле разница получается огромной
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
особенно в мире реакта
источник

K

Kir in Elm Lang сообщество разработчиков
Так посвяти, что там за магия хеш-мапов такая
источник

K

Kir in Elm Lang сообщество разработчиков
Стоп. cloneDeep?
источник

K

Kir in Elm Lang сообщество разработчиков
Аахаха
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Я тоже смеялся ... а потом несколько месяцев мучительно и тщетно обьяснял коллега почему так нельзя делать НИКОГДА... я был новеньким в компании, поэтому не особо прислушивались тогда
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Тот шаринг, который там делает внутри спред, какая-то местячковая подпорка
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
object не by construction такой, а значит как оно там себя ведёт, знать заранее нельзя
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
const state = { a: {...very big object}, b: {...very big object}, c: 1 }
const state1 = { ...state, c: 2 }
state.a === state1.a // true
state.b === state1.b // true

в случае рендеринга такое свойство спредов, что неизмененные части обьекта остаются эквивалентны по ссылке - имеет решающее значение
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Это adhoc
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
это конечно не нормалная иммутабельность в приличных языках, но без этого будет совсем вообще грустно и тот же реакт точно бы не вывез, болтался бы на низовых позициях
источник
2021 August 27

С

Сергей in Elm Lang сообщество разработчиков
а из исходящих портов можно результат получать?
источник

С

Сергей in Elm Lang сообщество разработчиков
как правильно организовать работу с js функцией которая ничего не принимает и возвращает разные результаты с течением времени? два порта делать?
источник