Комментарии 25
Автор, вы правильно подметили, что когнитивная нагрузка – это проблема такого рода вещей как react (я бы сюда еще плюсанул django и angular, я с ними немало работал)
Если одну и ту же вещь можно сделать большим количеством способов, я считаю это не очень круто... Будущее за простым вещами. Советую обратить внимание на https://cruzo.org
Выглядит неплохо, можно попробовать потыкать. Но в любом случае это скорее всего редко используемый JS фрейм по этому работу нам нем тяжело найти будет если очень понравится, пока что самым лучшим для себя я нашел именно Vue.js, еще Svelte неплох но там синтаксис в разметке мне не очень понравился, ощущение как будто вернулся в эру Pug или PHP
Да, я тоже за вью.
Поддерживаю автора на 200%.Сам ранее работал с vue. Потом по причинам"рыночной заполненности" реактом всего рынка один из проектов написал на реакт. Абсолютно теже ощушения что у автора. Если бы была постоянная работа на vue то никогда бы на пушечный выстрел к реакту бы не подошел бы. Жаль что всякий "непотреб" выходящий из лона рынка образующей компании залазит в мозг всем разработчикам не оставляя возможности критически взглянуть на технологию. С удовольствием выпью рюмку когда узнаю что реакт-"все". Просьба пингануть когда это случиться
Успех реакта вообще загадка, хотя нет, причины вполне ясны:
ложные пропагандируемые на старте преимущества (ну вот эти вот, что он супер простой, что никакого кастомного синтаксиса, что он супер быстрый, что он реактивный из коробки и т.п.)
чудовищный рекламный хайп от гиганта фейсбука
По сути, вся эта концепция построенная вокруг рендера, это какой то откат к низкоуровневому программированию, как рендер кадра 3D.
Плюс сколько проблем со стейт-менеджментом (либы перебрали уже все комбинации английских букв), да танцы вокруг изоляции стилей, все это признаки bad design.
Да я вот тоже не особо понимаю, почему то до сих пор даже с большой или маленькой командой выбирается реакт, вот вообще не понимаю вот этого момента, это как будто ударился мизинцем об тумбочку и ощущения понравились, давайте все ударимся, крч бред
Это просто страх совершить ошибку или страх ответственности - после того как реакт стал самым популярным фреймворком/либой (и неважно в реальности или в инфополе), когда стоит вопрос выбора - я выберу то, что сейчас самое популярное - реакт
А дальше это самоподдерживающаяся реакция - больше комьюнити, больше либ, больше проектов - больше комьюнити…
Автор, конечно, знатно бомбанул, хотя его никто не заставляет использовать реакт (дай знак, если все же заставляют)
Не совсем корректно сравнивать реакт и вью, один из них фреймворк, а второй только библиотека для отрисовки фронта (каждое слово важно)
При создании никто не предполагал, что всю бизнес логику запихают в хуки, реакт должен был быть только лишь отрисовщиком логики, заданной и обработанной в другом месте, и ничего бы там не требовало оптимизации по умолчанию, потому что сама по себе отрисовка реализована хорошо
Можно бесконечно сравнивать швейцарский нож и скальпель, и бомбить, что вторым сложно бутылку открывать, порежешься
К сожалению заставляют, у нас пару фронтовых приложений написано на реакте которые довольно легко и быстро можно обновить на Nuxt или Vue или вообще что то другое.
Кстати у нас раньше был Next но откатились потому что он дырявый)
С вашем комментарием я полностью согласен, просто во что реакт превратился и то как его используют это просто ужас, его везде пропихивают...
Ужасно надоели костыли которые нужно решать за разрабов самой либы)
А по поводу фрейма и либы, да в целом да тоже согласен, все остальное фреймворки, а реакт библиотека по типу того же самого jQuery но со своей экосистемой как тот же самый jQuery :D
да у jquery даже своя обертка для запросов есть. Взять тот же бекбон, прописываешь коллекцию и у тебя готово rest представление.
Я кстати заморочился сделать форк под современный js
https://ostovjs.org/
О какой отрисовке речь? React – это просто кривое построение дом-дерева.
Считаю, что не называть реакт фреймворком это лукавство, типа, ой, я лишь либа, какие ко мне вопросы, дальше всё сами решайте.
Но это не так, если выбрал путь реакта, то ты завязан в этой парадигме, и вынужден использовать только либы, которые заточены под него, и использовать их вне его - невозможно, это инфраструктура замкнутая сама на себя.
jquery - это либа, underscore, handlebars и тп - вот это фреймворк-агностик либы , а реакт - это экосистема, сиречь, фреймворк.
Не совсем корректно сравнивать реакт и вью, один из них фреймворк, а второй только библиотека для отрисовки фронта (каждое слово важно)
Корректно, так как инструменты взаимозаменяемы и решают одни и те же задачи. Те полностью перекрывают юз кейсы друг друга (основные, нишевые в учет не берем).
При создании никто не предполагал, что всю бизнес логику запихают в хуки, реакт должен был быть только лишь отрисовщиком логики, заданной и обработанной в другом месте
Это всегда самое спорное утверждение, так как оно всегда исходит от пользователей реакта и никогда от мейнтейнеров реакта. Более того реакт прыжками движется в сторону "все в реакте должно быть на реакте" привет RSC который как концепт очень плохо совместим с внейшними источниками логики и наоборот навязыват пихание всего подряд в компоненты, что тоже не совпадает с озвученной тобой мыслью. Также в документации к главному хуку для интеграции с внешними сторами есть предупреждение "используйте когда возможно useState/useReducer вместо этого", никакой мотивации о том, что мол круто реакт отвечает за отображение, а логику унесите в другое место, ну нет такого призыва в доке
Рыночек порешал
Основной батхерт, что на конференции в 2013 году, нам обещали - реакт будет сам рендерить все ваше приложение и вам не нужно будет об этом думать. Прошло 13 лет и мы до сих пор думаем об оптимизациях, косяках. А самое главное, что еще в 2018 создатель Svelte написал вполне себе хорошую статью - виртуал дом это оверхед. Ко всему этому, реакт исторически аля компосибл, куча мелких либок, чтобы собрать готовый суп. Но сам реакт его так и не собрал в свою экосистему, за него это делает аля next.js, с критами (выполнение кода на сервере), всякие тенстеки и прочая лабуда. Сам продолжаю использовать реакт, но по большей части уже давно на Vue. Это небо и земля. А если нужен реальный SSR без головняка - можно взять Alpine, Adonis, Edge...
Выше пишут - это всего лишь UI либка, униваерсальная. Вы когда-то использовали чисто UI либу? Вы обмазываете проекты 100500 разными либами в довесок. Такой-то стор, такие-то стили, такая-то обертка запросов, кеши, ssr, и прочая шелуха. А если захотите сделать общую библиотеку компонентов на реакт, то придется даже onClick в пропсах прописывать. В том же vue можно просто на компонент навесить без явного определение и вызова внутри. И таких мелочей десятки. И ради чего? Что бы самим не вызвать .render в MVC фронтовых фреймворках того времени? Что бы потом придумывать fiber и прочее, что бы как-то приблизиться к тому же перфомансу с виртуалдом? Я на jquery с бекбоном делал фронтовый редактор лендингов, не скажу, что сложность была выше)) Еще в 2012м с require.js я мог подгрузить файл на лету, код сплитинг был не фишкой, а базой. И спокойно мог рендерить на чем угодно на беке, php, python, java etc, без проблем с гидрацией)
Единственный плюс, это да, рынок впитавший это, многие знают реакт и возможность рендерить не только в html из за vdom

Понимает ли автор почему люди используют в проектах фреймворки или библиотеки по типу React'а вместо собственных велосипедов?
в реальности React учит паттернам, которые работают только в React и нигде больше.
... как и любая другая библиотека, в которой есть собственные идеи/интерфейсы/API
А почему он перерисовывается без этого?
Потому что функция создаётся заново
потому что родительский компонент перерисовывается.
Так прикол то в том что в целом в реакте очень тяжело понять где тебя нужна эта оптимизация, конкретно нам дали инструменты для оптимизации а примеров с ними в документации, вот вообще нет, аля сам догадывайся где тебе это стрельнет в ногу, в том же самом Vue.js у тебя вообще не такой темы как useCallback, у тебе есть computed который равен по сути useMemo и то он работает куда лучше.
В нативном JS у тебя даже не существует такой обертки, тут оптимизировать нечего, в этом абсурд ситуацией, что в нативе ты ничего докинуть не можешь, а тут почему то должен докидывать. И пример с счетчиком это и еще понятно что тут оптимизация не работает, а просто пример как усложняется читаемость кода потому что разрабы придурки которые не могут исправить.
1 Пункт как раз таки и говорит про трудности читаемости JSX/TSX если у тебя реакт потому что вот эта возня начинается.
Комментарий от nin-jin через 3..2..1.. :)
Занятно, что никто даже не заикнулся про Angular.

Что не так с React.js? Мой личный баттхёрт