Nikita
а не было ни у кого такой фигни с docz?
Nikita
чё за бред?
так работает:
Nikita
закоментировал строку в сгенерированном файле
Alexeyhh
Есть ли какой-нибудь способ POST requesta между реактом и беком на экспрессе кроме как axios/post(localhost:5000) ?
Мне почему-то кажется есть какой-то более нативный способ, который я не могу нагуглить
Nikolai
Yaroslav
Nikolai
artalar
@rovnyart Aleksandr @risenforces @vitfollower
(тред: обновление зависимостей в большом проекте очень болезненное и дорогое - что делать?)
Серебряных пуль нету и все хорошо в меру.
Некоторые ответы уже были даны, но я распишу подробнее.
Обновляться определенно стоит и вот почему: 1) на старых зависимостях могут (и будут) всплывать потенциальные баги. Сейчас количество используемых либ так огромно, что проблемы с безопасностью находятся примерно каждые несколько дней в большом приложении. 2) Если не обновляться часто, то можно потерять совместимые промежуточные версии и получится, примерно, следующая ситуация: приперло из-за п.1 -> обновить все и сразу не можем, ибо слишком много мажорных (и ломающих) изменений -> обновится частично не можем, ибо в этом случае нужно подбирать совместимые версии всего стека, а это сделать не получается потому что именно в вашем проекте вылезла какая-то ну очень не приятная бага именно с этим набором версий и никто, конечно в ней ни разбираться не чинить из ментейнеров пакетов не будет -> страаем, бьемся головой о стенку.
Это я рассписал один из вариантов, их есть еще несколько не приятных.
Мое видение как безопаснее всего работать с пакетами:
1) 🤓стараться не раздувать нод-модули, особенно кросс-зависимыми пакетами (идеально: отсутствие / минимальное количество peerDeps в прод(!) и дев зависимостях). Писать 🚲.
2) 🕰 Стараться искать либы с наличием LTS версий или предлагать это делать тем либам, у которых этого еще нет. Можно самому поддерживать какую-то LTS версию, если вам она важна, и автору профит, и в свой гитхаб (резюме) лишняя позитивная активность, и надежность проекта повышена.
3) 🗓 Обновлять зависимости не реже 1 раз в сезон (3 месяца).
4) 🧪 Обязательно писать автоматические регрессионные интеграционные тесты на ключевые (и не только) сценарии бизнес-логики.
5) 🕸 Использовать все либы через свой локальный реекспорт, контролировать и декорировать функциональность через него. Так же, например, при обновлении всего пакета сломался какой-то модуль / функция - ну, как временный workaround, выложите на гит чисто его старую / исправленную версию и установите и используйте как отдельный пакет. Хотя тут нужно быть аккуратнее с ui-либами и миксом их глобальных стилей разных версий.
6) 🤖 Используйте генераторы и кодмоды (докладов куча) - контролируйте максимум кода в автоматическом режиме, используйте и пишите свои статические анализаторы и модификаторы.
_) ну меньшая зацепленность, все дела…
artalar
@rovnyart Aleksandr @risenforces @vitfollower
(тред: обновление зависимостей в большом проекте очень болезненное и дорогое - что делать?)
Серебряных пуль нету и все хорошо в меру.
Некоторые ответы уже были даны, но я распишу подробнее.
Обновляться определенно стоит и вот почему: 1) на старых зависимостях могут (и будут) всплывать потенциальные баги. Сейчас количество используемых либ так огромно, что проблемы с безопасностью находятся примерно каждые несколько дней в большом приложении. 2) Если не обновляться часто, то можно потерять совместимые промежуточные версии и получится, примерно, следующая ситуация: приперло из-за п.1 -> обновить все и сразу не можем, ибо слишком много мажорных (и ломающих) изменений -> обновится частично не можем, ибо в этом случае нужно подбирать совместимые версии всего стека, а это сделать не получается потому что именно в вашем проекте вылезла какая-то ну очень не приятная бага именно с этим набором версий и никто, конечно в ней ни разбираться не чинить из ментейнеров пакетов не будет -> страаем, бьемся головой о стенку.
Это я рассписал один из вариантов, их есть еще несколько не приятных.
Мое видение как безопаснее всего работать с пакетами:
1) 🤓стараться не раздувать нод-модули, особенно кросс-зависимыми пакетами (идеально: отсутствие / минимальное количество peerDeps в прод(!) и дев зависимостях). Писать 🚲.
2) 🕰 Стараться искать либы с наличием LTS версий или предлагать это делать тем либам, у которых этого еще нет. Можно самому поддерживать какую-то LTS версию, если вам она важна, и автору профит, и в свой гитхаб (резюме) лишняя позитивная активность, и надежность проекта повышена.
3) 🗓 Обновлять зависимости не реже 1 раз в сезон (3 месяца).
4) 🧪 Обязательно писать автоматические регрессионные интеграционные тесты на ключевые (и не только) сценарии бизнес-логики.
5) 🕸 Использовать все либы через свой локальный реекспорт, контролировать и декорировать функциональность через него. Так же, например, при обновлении всего пакета сломался какой-то модуль / функция - ну, как временный workaround, выложите на гит чисто его старую / исправленную версию и установите и используйте как отдельный пакет. Хотя тут нужно быть аккуратнее с ui-либами и миксом их глобальных стилей разных версий.
6) 🤖 Используйте генераторы и кодмоды (докладов куча) - контролируйте максимум кода в автоматическом режиме, используйте и пишите свои статические анализаторы и модификаторы.
_) ну меньшая зацепленность, все дела…
Закинул в бложик https://github.com/artalar/blog/blob/master/src/pages/dependencies.md
(когда-нибудь я сделаю сайт…)
Anonymous
Anonymous
Ничего пилить даже не придется
artalar
Это минут 20 надо потратить, если не час ☝️
Aizada
constructor(props) {
super(props);
this.state = {
data: [
{
"id": 1,
"name": "FIT",
"about": "Some about FIT",
"departments_of_faculty": [
{
"id": 1,
"name": "POKS",
"about": "Some about POKS",
"teachers": [
{
"id": 1,
"name": "Saliev Alisher Borubaevich",
"photo": null,
"status": "professor",
"contact": "email: alisher@mail.ru"
},
{
"id": 2,
"name": "Stamkulova Guldana Kubanychbekovna",
"photo": null,
"status": "teacher",
"contact": "phone: +996555444585"
}
],
"groups": [
{
"id": 1,
"name": "IS(b)1-16",
"grade": 1
},
{
"id": 2,
"name": "PI(b)1-14",
"grade": 2
}
]
}
]
}
],
Aizada
Get_Groups(){
this.setState({
groups:this.state.data.departments_of_faculty.groups
})
console.log(this.state.groups)
}
Aizada
Почему Cannot read property 'groups' of undefined
Nikita
setState асинхронный.
N_KH_M
Aizada
groups обявлень
Aizada
this.state.data.departments_of_faculty.map(departments_of_faculty =>
this.setState({
groups:departments_of_faculty.groups
}),
)
Aizada
Anonymous
setState асинхронный.
Aizada
console.log(this.state.data.departments_of_faculty.groups) тоже не работает
Aizada
как можно get groups data
игорь/igor
Ula
Есть функциональный компонент инпута. Пользователь может менять в нем текст.
Так же есть селект, при рендере и изменении селекта проверяется какое значение выбрано и через мапинг соответствующее ему описание вставляется в инпут. Не затирая его, а добавляя описание после существующего в инпуте текста. Я это делаю так: значение текста инпута храню в одном стейте, а значение описания в другом и в инпуте конкатенирую их. Это позволяет не добавлять текст описания (а заменять существующий текст именно описния) каждый раз при смене инпута
Теперь вопрос: я засабмитил форму, при рендере я конкатенирую со значением описания после мапинга со значением селекта, а потом проверяю есть ли там текст описания (через indexof), если есть неизмененный, то удаляю. Получается текст так никогда и не добавляется, ТК сразу после добавления удаляется
Abilmansur
как правильно импортировать жсон? выдает ошибку You may need an appropriate loader to handle this file type.
нужно ли устанавливать библиотеку какую нибудь?
Sheldhur
суп. Че оно от меня хочет то?
Warning: React does not recognize the `widthHide` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `widthhide` instead. If you accidentally passed it from a parent component, remove it from the DOM element.
я уже даже так пробовал делать
const ButtonWrapper = styled(({ widthHide, ...rest }) => <Button {...rest} />)
и типы указывать один хер
Vladimir
у тебя в ...rest приходит прос который потом видимо так же спредом попадает на дом элемент, скорее всего на тег button
Vladimir
посмотри, что у тебя в компонент батон приходит
Vladimir
widthHide этот проп проваливается в дом элемент
Sheldhur
это не мой компонент
Vladimir
ну значит посмотри какие пропсы принимает этот компонент, раз он библиотечные, то у него должно быть в доке описание пропсов
Sheldhur
ну я знаю какие он принимает
Sheldhur
и этот пропс я ему не передаю
Vladimir
ну вот, закн\онсоль rest, и убери оттуда ```widthHide```
Sheldhur
так оно и так убирается же
Vladimir
а ну да)
Vladimir
чет я только на рест посмотрел)
Vladimir
открой дев тулз
Vladimir
посмотри верстку этого элемента
Vladimir
и там по идее на какомто теге может быть атрибут [object object]
Vladimir
каким-то образом пропс widthHid проваливается на дом элемент
Sheldhur
я чет поправил оно прошло, я нихуя не понял
Oleg
Oleg
а effector вообще круче redux?
Oleg
Anton
Помогите пжлст понять в чем ошибка. Она появилась при добавлении комментария.
Сейчас структура такая:
⁃ в компоненте StandupUser, где выскочила ошибка, в мапе перебирается весь контент и отправляется в саб-компонент
⁃ В этом саб-компоненте тоже перебирается контент в мапе и отправляется в 3-ий компонент
⁃ В 3-ем компоненте есть форма с комментарием. Когда добавляется коммент, то выскакивает эта ошибка.
В реакте нельзя делать форму внутри map?
Eugene
standupAnswers не массив
Anonymous
не смутило что у массива ключ - индекс, а тут слово, это же объект)
Китикет
🦜
🦜
)000))
アレクサンダー・バキマトフ
еще и снейккейс лул
Anton
Madiyar
кто нибудь перекатывался с CRA приложения на razzle?
🦜
Madiyar
для SSR
Andrey
Madiyar
ну SSR нужно для SEO
Madiyar
или сейчас роботы умные?
Китикет
Через годик уже наверное не нужно будет сср
Китикет
А может и меньше
Vadim
Китикет
🦜
Китикет
Но телефоны то получше уже будут через год)
Vadim
Madiyar
ну так вернемся к вопросу, есть три стула razzle, nextjs, или самописный ssr для CRA
Madiyar
на какой сесть?
Китикет
🦜
Madiyar
скорость и ssr для SEO