Pull to refresh

Comments 24

То, что вы называете утечкой, больше похоже на выделение мелких мусорных объектов. Жаль, если сборщик мусора не может с ними справиться. Фрагментация хипа всякой мелочью — тоже не особо хорошо. Вы правильно сделали, что заменили создание функции на лету на передачу ссылки на метод инстанса.
По возможности метод render() не должен выделять память в результате своей работы.
В идеальном мире мы всегда рассчитываем, что GC сделает свою работу, однако, это не всегда правда. Надо помогать ему в этом :)
Тут даже дело не в утечке, которая маловероятна. React увидит, что изменился аттрибут onClick и переназначит обработчик. Лишняя ненужная работа.
А если так передавать коллбэки не в DOM элементы, а в дочерние компоненты — у них будет еще бонусом холостой render вызываться.
Если состояние не изменилось, то нет смысла вызывать render лишний раз. Эту проверку мы осуществляем в методе shouldComponentUpdate, который добавили во все наши компоненты.
Метод shouldComponentUpdate ведь вызывается неявно, или я что то путаю. Тогда зачем вы добавили его во все методы?
Неявно он вызывается только у компонентов, наследующихся от класса React.PureComponent, который появился в версии 15.3.0

Компонент, для показа и ввода даты у вас тоже стейтлесс и требует для своей работы следующие пропсы?


value : string
currentFormattedString : string
selectionPosition : [ number , number ]
onValueChange : ( value : string )=> void
onYearChange : ( year : number )=> void 
onMonthChange : ( month : Month )=> void 
onResetToCurrentDate : ()=> void

тащить всё в store нет нужды, некоторые компоненты в действительности stateful, для DateInput API следующее:


value: Date
onChange: (newValue: Date) => void

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

меня сломала фраза
По нашей сетке компоненты строятся на формах

не поясните?

стандартный подход к раскладке форм по Grid'у: задаются колонки, строки, внутри них вставляются компоненты

Очень интересно, у нас похожий стек технологий, и тоже движемся к созданию внутренней библиотеки компонент. Вот только делать все компоненты полностью stateless не всегда разумно, т.к. порой это приводит к дублированию кода в бизнес-логике. Redux вовсе необязательно знать, открыта менюшка или нет...

Согласен, об этом я писал выше: главное подходить к stateless-компонентам без фанатизма

React реально изучить за пару дней?

Да, у React очень низкий порог входа, поэтому на собеседовании мы не спрашиваем знания React.

В планах — перевод устаревшего ActiveX на Java-апплеты
а Java-апплеты не устаревшая технология?

в отсутствии ActiveX это пока единственный способ подружить браузер с железом, если есть предложения, как это сделать, будем рады услышать

Разве что локальный сервер.

Chrome и NativeClient плагины же!

Electron/NW.js — ЭТО единственный нормальный способ подружить браузер с железом, это если речь идет о терминале или интерфейсе для внутреннего использования. А если речь идёт о веб-приложении для пользователей, то не нужно требовать их устанавливать/запускать какие-то убогие плагины.
потому что в IE8 очень скудный инструментарий для дебага


Возможно конечно, что с времен 6-ки все испортилось, но…

Just-In-Time debugger

Это работало еще в те времена когда вообще никаких js-debugger нигде не было.
Систематизация это круто, но без велосипедизации никуда — вот этот кусок html из страницы входа в сбербанк-онлайн.
image
На самом деле, мне кажется это спорным моментом.
Понятно, что безопасность, все дела. Но если пользователь хочет сохранять пароли от банка в хроме — пусть сохраняет.
На то и перекладывают ответственность за хранение пароля/пинкода и ещё много чего, на пользователя.
Sign up to leave a comment.