React, взгляд со стороны. (не более чем личное мнение). Итак React или Vue?
Rect изучаю ну может быть с неделю, но мнение о нем уже составлено.
Итак:
возможности фрейморков, здесь говорить не о чем. В принципе все что можно сделать в одном, можно сделать в другом.
Очень важный параметр как скорость и тяжеловесность для браузера. Здесь тоже особенно говорить не о чем.
В принципе результаты сопоставимы. Очень важный момент, который бы хотелось отметить в отношении React, - он спроектирован и реализован очень профессионально.
"Голубая кровь" в нем так и прет наружу. Уж извините за сравнение. В нем вам никогда не придется возвращаясь к задаче, "вспоминать" как все было сделано.
То что часто пишут - "разбираться в чужом коде", в React с этим дело иметь не придется.
Если вы любите программировать, и считаете что ковыряние компонент js это ваше любимое занятие - vue. Если вы считаете что визуализация задачи -
это ремесло (сделал, забыл идем дальше...) - это React.
Есть у меня претензии (шероховатости) к React? Ну конечно - есть.
И несмотря на это Vue - это сделано в китае, React - это facebook. Вот просто вынужден признать, - качество! Дальше думайте сами.
Теперь также хочу высказать свое понимание стратегии создания компонентов в React.
Первое что нужно понимать - никто за вашим кодом не следит ( типа оптимальность, если не изменилось, то не перерисовывается... - хрень ).
Ну может при переходе от виртуальной DOM к браузерой что то подобное и есть, но я сомневаюсь в этом. Исхожу теперь из гипотезы:
Есть setState - есть render. Независимо что там у вас setState, render в полном объеме.
Поэтому если создается приложение (как правило - система меню, отдельные блоки новости,строки состояний и прочее) в котором есть основной App
а все остальное как компоненты внутри этого App, то это неправильно. С точки зрения производительности необходимо разделять компоненты (делать из несвязными)
и разделение такое осуществляется по экранным блокам выводимой информации. Например если есть меню - то меню это отдельный компонент, в нем вложены кнопки,
ссылки, меню других уровней. Но этот компонент меню не вложен ни в какой другой компонент. т.е. у него нет родителя. Аналогично все остальные блоки приложения.
Т.е. под рекомендацией React разделять компоненты (дробить) я понимаю именно это. При таком подходе у вас никогда не возникнет вопрос производительности.
Добиться этого не сложно. Остается вопрос связи таких "независимых" компонентов между собой. Это тот вопрос, который я поднимал в предыдущем топике. И у него есть решения.
Теперь, как был все-таки решен заданный мной вопрос. memo в данном случае не подходит. Это решение суть - то же самое что shouldComponentUpdate.
Итак данный пример чудненько решается если перенести обработку ArrowUp ArrowDown в компонент row. получение события обеспечивает фокусировка.
При получении события только одна строка (ативная) перерисовывается (становится неактивной) и передает родительскому компоненту сообщение о перерисовке.
Родительский компонент, фиксирует у себя номер новой активной строки и обращается в дочернему классу (используя дочерний this) этой новой строки с ненавязчивой просьбой перерисоваться. )))
Результат круче чем в Vue.
В любом случае рекомендую всякие раз создавая компоненту закладывать shouldComponentUpdate. Без этого в React не обойтись. дело утопающих дело рук самих утопающих.
Всем спасибо за терпение
|