Виталий
Для тех кто может хоть сколько нибудь адекватный совет дать, прошу посмотреть Народ, посмотрите пожалуйста этот код https://codesandbox.io/s/rdg-cell-editing-ozmv8?fontsize=14 Есть компонент Example. Его надо переписать в функциональном стиле. Я сделал Example2 и использую хук состояния. Однако при обновлении таблицы (нужно кликнуть на ячейку и потянуть за угол вниз), когда я вызываю хук setRows, перерендеринга не происходит. Что я делаю не так?
Александр
Извиняюсь я был неправ, посмотрел реализацию useState, там используется Object.is для сравнения предыдущего и нового значения, я был уверен что вызов setState безусловно вызывает перерендер
Александр
[...rowsState]
На 56 строке поправьте, вы мутировали один и тот же массив который при сравнении через === давал true и ререндера не происходило
Виталий
Т.е. правильно я понимаю что сколько бы я не вызывал setState хук с объектом по одной и той же ссылке - никогда не произойдет ререндер? Только новый объект надо создавать?
Виталий
Хм.. неожиданно
Александр
И для меня
BARSOOQUE
Какая логика должна быть в кастомных хуках? Вообще вся что только можно, а визуалка отдельно? Или есть какое-то общепринятое определение?
Valentin
Cпасибо за объяснение.
Спасибо. Интересно. Надо уже хуки пробовать.
Valentin
Какая логика должна быть в кастомных хуках? Вообще вся что только можно, а визуалка отдельно? Или есть какое-то общепринятое определение?
Я бы опускал бизнес логику вообще вне реакта. И его использовать только для ui. Если ui требует хранить какое-то состояние. То использую стейт реакта. Если это что то более сложное, лучше выносить. Имхо.
Valentin
Ну в итоге то разобрались...
Ну я ещё не знал, когда писал)
Andrey
лучше скейлится, не зависит от структуры компонентов, не надо городить костыли вокруг их жизненного цикла
Александр
некоторым нравится mvc
А как mvc с реактом подружить?
Dmitriy
Alexey
А как mvc с реактом подружить?
вероятно pure functional components только return и никаких условий
Alexey
внутри в смысле ничего не считать, а вынести в функции отдельные так и логику можно легко шарить между компонентами
Alexey
мне кажется без особой разницы
Alexey
если скорость важна, jvm, go, rust, c++ (c), с# у нас легаси часть проекта на php7.3 вертится вроде работает
Alexey
ну у нас не настолько, но классы в 6500 строк тоже совершенно не нравятся
Dmitriy
фу ребят давайте не будем
Alexey
эндпоинт на новую платформу? тогда без разницы, главное снова не наговнокодить
Valentin
А какие причины выносить бизнес логику от реакта подальше?
Я тут стал чаще задавится этим вопросом. Наверное самое первое, мне нравится модель mvc. Ее лучше поддерживать и переиспользовать. И опыт такой имеется. Ещё можно заменить реакт если потребуется. Но это теория.
Valentin
Просто очевидно что до какого то обьема приложения mvc будет оверхедом
Я люблю Энтерпрайз приложения. И вся моя сознательная работа происходила в таких реалиях. Если это что то поменьше. То наверное да, было бы приятно все в одной экосистеме держать.
Valentin
Нужно наверное уточнить на каких обьемах аппы это оправдано
Ну нужна новая фича. Она требует пару моделей из какой-то верхней уровня логики. Ещё сдо десяти сервисов. И лучше обернуть вью часть в стейт машину. Я не представляю как предложить максимально эластичный функционал инструментов, что бы это быстро собрать без mvc. А такое особенно часто встречается в стартапах. Делали одно, потом за вечер все поменялось и нужно переписывать кучу логики. И рыться в реакте? Посмотри в сторону inversifyJS. Как модно организовывать (микро) сервисы и переиспольщованностл компонентов бизнес логики. Крч. Когда всего не утаить в реакте. Когда это становится слишком сложно для человеческого мозга. Это нужно разделять на простые модели. А зачем для их описания использовать реакт? Лучше нативный ес 6
Valentin
Спасибо за развернутый ответ. Дополнения остальных 2200 приветствуются
Блин. Тут лучше смотреть примеры таких проектов. Архитектуры. Они оч интересные, а главное расширяемые и удобные в поддержке. Я не могу собрать кучу мелких «но», в какую-то одну простую мысль.
Valentin
Я считаю мы в команде должны основываться на определённых методологиях разработки. Используя уже описанные паттерны и алгоритмы. Это увеличивает объём кодовой базы. Но при правильных методологиях (прим. SOLID). Любой участник проекта просто не сможет долго и методично говнокодить. Я пришёл к этой мысли. Тк когда стартап проект начинает приобретать форму почти каждое добавление нового функционала влечёт изменение текущего. Разбивка его на более мелкие кусочки. Которые нужно подвергать тестированию. И уже из них создать композиции. Таким образом что то будет удаляться, что то добавляться. Я не уверен, что такое возможно сделать только на реакте. Все. Кончил. А не... на пример ты работаешь с каким то динамическим списком. Ок. Ты можешь проконтролировать динамический рендер дерева одного модуля в приложении. А если эти данные должны асинхронно меняться и в соседних компонентах? А если и на всех вкладках? Все превращать в помойку через контекст? Вот эта бизнес логика по тому как сущности должны меняться, общаться с беком. Лучше убрать из вью части приложения. А как это сделать лучше я хз. <3 имхо
Valentin
Да я в поисках работы. Ищу лютых любителей SOLID методологии. Что бы научиться и стать лучше. Обожаю Энтерпрайз!!!
Anonymous
Что такое динамический рендер дерева?
Zaff
Я считаю мы в команде должны основываться на определённых методологиях разработки. Используя уже описанные паттерны и алгоритмы. Это увеличивает объём кодовой базы. Но при правильных методологиях (прим. SOLID). Любой участник проекта просто не сможет долго и методично говнокодить. Я пришёл к этой мысли. Тк когда стартап проект начинает приобретать форму почти каждое добавление нового функционала влечёт изменение текущего. Разбивка его на более мелкие кусочки. Которые нужно подвергать тестированию. И уже из них создать композиции. Таким образом что то будет удаляться, что то добавляться. Я не уверен, что такое возможно сделать только на реакте. Все. Кончил. А не... на пример ты работаешь с каким то динамическим списком. Ок. Ты можешь проконтролировать динамический рендер дерева одного модуля в приложении. А если эти данные должны асинхронно меняться и в соседних компонентах? А если и на всех вкладках? Все превращать в помойку через контекст? Вот эта бизнес логика по тому как сущности должны меняться, общаться с беком. Лучше убрать из вью части приложения. А как это сделать лучше я хз. <3 имхо
Я бы отправил гифку собаки из острова собак, которая смотрит по сторонам, но в группе оказывается запрещены гифки или собаки
Valentin
Что такое динамический рендер дерева?
Что то случайное из головы. Пускай будет огромный список данных. Который мы может изменять через бек. А некоторые из данных (из списка) ещё отображаем в соседних компонентах. Никак не связанных с этим. Не давно смотрел как реакт делает перерендер внутренне компонентов. Особенно если это массив данных. А в них другие данные. И все это крутится. Вертится. Сортируется и тп
Valentin
Что такое динамический рендер дерева?
Блин. Не могу найти супер пример. Был в слаке на предыдущей работе. А меня выкинула безопасность ((
Valentin
Реакт делает все правильно, если уперлись в производительность, то есть способы решить проблемы
да, хотел показать пример с этим. Пусть реакт остается на рендер. Но всю логику с работой этих данных вынести из него. Пускай думает только над рендером.
Александр
да, хотел показать пример с этим. Пусть реакт остается на рендер. Но всю логику с работой этих данных вынести из него. Пускай думает только над рендером.
Реакт это не только view, это и controller и model для данных (в какой-то степени), мой поинт в том что MVC не ложится совсем на подход реакта
Valentin
React Window не то?
Не. Слушайте я же совсем про другое, что бы реакт только рисовал. Не нужно пытаться воссоздать и поддерживать мвс только внутри реакта
Александр
ложится если его брать только для V
Но user interaction это же не view, это controller ?
Valentin
Я про динамический рендеринг
я точно не правильно выразился. =(
Zaff
я точно не правильно выразился. =(
Я тоже не в теме, пойду спать
Dmitriy
Но user interaction это же не view, это controller ?
то как будет регаировать вью отнюдь не обязательно в реакте держать
Александр
то как будет регаировать вью отнюдь не обязательно в реакте держать
Ок, а такой подход даёт какие-то преимущества?
Dmitriy
лучше скейлится, не зависит от структуры компонентов, не надо городить костыли вокруг их жизненного цикла
Dmitriy
Костыли вокруг жизненного цикла? Не сталкивался
видимо речь идет о всякого рода мемоизациях и завязывании на ЖЦ компонентов бизнес логики
Александр
Скажем так, а есть пример опенсорсного приложения уровня выше хеллоу ворлда, где модно в действии такой подход увидеть?
Александр
Напротив, я когда-то придерживался подобных взглядов о разделении когда начинал знакомится с реактом в 2013...2014 году, потом я отпустил ситуацию и стал делать проекты именно react-то ориентированными если так можно выразится, не вынося логику наружу, и это по моему мнению позволяет проекту быть более органичным, более вписанным в саму идеологию реакта.
Valentin
Скажем так, а есть пример опенсорсного приложения уровня выше хеллоу ворлда, где модно в действии такой подход увидеть?
Что то не могу найти, ужс какой то. Точно есть, близкое можно это посмотреть. Хорошие практики и советы: https://github.com/labs42io/clean-code-typescript
Александр
Александр
Тут есть конкретная зависимость от обьема аппы. Чем меньше тем подход более оверхед
Возможно, работать с прямо очень большим приложениям не доводилось
Александр
пока мне нечего показать...
Может другие приложения из открытых которые по вашему мнению соответствуют тому как это должно быть по вашему
Valentin
только увидел https://ota-solid.now.sh/ выглядит очень круто. Прочитайте (сам буду читать)
Valentin
но я тут топлю именно за методологию разработки. это не список нпм библиотек для работы включая реакт. Здесь про другое
Александр
ООП ох :) но спасибо в любом случае, прочту
Valentin
и весь монолог выше был не про реакт (не только).
Valentin
ООП ох :) но спасибо в любом случае, прочту
я ООП мог пересказать, но только через солид методологию стал понимать как на самом деле можно опираться на ООП и не сломать себе тельце
Александр
я ООП мог пересказать, но только через солид методологию стал понимать как на самом деле можно опираться на ООП и не сломать себе тельце
Просто мы тут о реакте конкретно стараемся говорить, а не о GUI в общем, так вот реакт не очень то ООПная штука, и как вписать его в ОО систему не понятно
kübernarkomaan
ребят, есть кто тут имел дело с react-dropzone? проблемка, файлы не аплоадятся в форму, поле "files" пустое. при этом сами файлы как объекты нормально загружаются в стейт. ща скину гист
kübernarkomaan
kübernarkomaan
https://gist.github.com/talentlessguy/0b6e49363d50ca7a163726d885aa9b29
Valentin
Просто мы тут о реакте конкретно стараемся говорить, а не о GUI в общем, так вот реакт не очень то ООПная штука, и как вписать его в ОО систему не понятно
Да я все стесняюсь добавить. Просто мне оч нравится Bem-react. Очень свеженький продукт. И в экосистеме реакта
Александр
Да я все стесняюсь добавить. Просто мне оч нравится Bem-react. Очень свеженький продукт. И в экосистеме реакта
BEM как по мне так не нужен с появлением css in js решений, ну скажем styled components
Jane
всем привет! кто-то использует кубик-безье трансформацию?И если да - то где?
Inversia
всем привет! кто-то использует кубик-безье трансформацию?И если да - то где?
да везде вообще где есть анимация это используется