Ruslan Yumakaev
Сделал вот так, насколько это правильно?
nopefish
вообще можно и покороче const listHeroes = heroes.filter(hero => hero.id === 1).map(hero => (<li><AppPromoItems heroes={hero}/></li>);
Anatolevich
Ребята, кто сталкивался с такой проблемой, подскажите, как решить?
Anatoly
Ребята, кто сталкивался с такой проблемой, подскажите, как решить?
подозреваю, что нужно: import { addLocaleData } from "react-intl"; вместо import addLocaleData from "react-intl";
Anatolevich
посмотри, что экспортирует библиотека
А что нужно прописать? У меня кстати так: import { addLocaleData } from "react-intl";
Anatoly
может версия либы не та
Alex
https://github.com/formatjs/react-intl/blob/master/docs/Upgrade-Guide.md#breaking-api-changes
Anatoly
https://stackoverflow.com/questions/57473534/attempted-import-error-addlocaledata-is-not-exported-from-react-intl гуглить надо
Alex
там понятным английским языком написано что нет больше addLocaleData в либе. И написано как полифилить
$$$$$$$
кто-нибудь работал с либой luxon ?
Тимофей 🛴
кто-нибудь работал с либой luxon ?
Вопрос сразу и в @js_ru скорее всего
Павел
Не
всмысле не? 2 прохода лучше 1 ??
Тимофей 🛴
всмысле не? 2 прохода лучше 1 ??
Сча бы проходы считать
Ruslan Yumakaev
Ребят, что делаю не так? Если все успешно загружено, возвращаю компонент, если же нет, возвращаю загрузку (спиннер)
Ruslan Yumakaev
Китикет
всмысле не? 2 прохода лучше 1 ??
2 более читаемых прохода лучше 1 менее читаемого, когда элементов тут макс штук 50 может быть в принципе
Павел
если кто то не знает reduce не значит что он менее читабелен
Китикет
Потому что {loader} не в контексте jsx - обьект
Китикет
если кто то не знает reduce не значит что он менее читабелен
Суть не в том, знает его кто-то или нет, а в том что описание логики в нем идет императивно, плюс само название метода ни о чем не говорит и надо разбираться в колбеке
Evgen
если кто то не знает reduce не значит что он менее читабелен
Редюс подходит хорошо для сверток. А тут неплохо .filter.map
Китикет
Спасибо)
Просто return loader делай
Павел
а вынести и назвать логично?
Китикет
а вынести и назвать логично?
Зачем все это, когда filter().map() отлично решают задачу?
Павел
⁉️
Evgen
Зачем все это, когда filter().map() отлично решают задачу?
Плюсую. К тому же в таком подходе проще и фильтр заменить и мап и то и то. С редюсом это не прокатит
Китикет
Щас бы с 50 элементами всерьез думать о производительности перебора
Китикет
Когда бегло читаешь логику, гораздо быстрее визуально различаются фильтры, мапы, сорты и тд, чем смотреть в код редьюса и разбираться в последовательном наборе if'ов
Ivan
⁉️
С — семантика. filter — фильтрация, map — отображение, reduce — свёртка.
Alex
Щас бы с 50 элементами всерьез думать о производительности перебора
Жизнь она сложнопредсказуемая. Ща у тебя 50 элементов, поменялись требования - 500 элементов. Ушло в продакшн - пару тысяч. Поработало там год - 100500
Китикет
Жизнь она сложнопредсказуемая. Ща у тебя 50 элементов, поменялись требования - 500 элементов. Ушло в продакшн - пару тысяч. Поработало там год - 100500
Пагинация, подгрузка, вынос тяжёлых операций в селекторы - есть полно способов оптимизировать это более корректно
Китикет
Когда пагинация невозможна, вроде таблиц 1000 на 1000 - тогда можно и об итерациях задуматься, да и вообще на фор перевести все это
Alex
Это да, согласен что заранее оптимизировать зло, что оптимизировать надо ботлнек и вот это все. Но выигрыш в читаемости .filter .map тоже такой себе эфмерный. Что та херня что эта херня, больше от предпочтений зависит
Alex
Есть случаи когда семантически вооще нефига не очевидно что использовать
Evgen
Есть случаи когда семантически вооще нефига не очевидно что использовать
Тут очевидно нужно использовать props.children, а все остальное в виде .filter.map.reduce - это лишь для того чтобы поболтать
Alex
я ща про сфериеский вакуум а не конкретный кусок кода))
Stanislav
Всем привет! Если есть форма и данные из неё передаются через Link c onClick вместо input[submit] с onSubmit на форме, это грубый косяк или нет? И вообще косяк ли это?
Evgen
я ща про сфериеский вакуум а не конкретный кусок кода))
Все зависит от ситуации - эсли нужно что-то отфильтровать, то фильтр, если что-то преобразовать - то мап, если сделать свертку - то редюс. Что ж сложного?
Богдан
Я вот подумал на счёт этого "пиара" MobX... Вот простой кейс для работы с аналитикой (код на Reatom). // File 1: Google subscribe(addedProduct, productInfo => { // ...отправка данных в гугыль }) // File 2: Yandex subscribe(addedProduct, productInfo => { // ...отправка данных в яшу }) // File 3: VK subscribe(addedProduct, productInfo => { // ...отправка данных в вк }) // etc... Reatom — ок, +TS Effector — ок, +TS Redux — +- через middleware и с костыльным выводом типов А как справляется с этим кейсом MobX? :)
аналогично const addedProduct = observable(null); // File 1: Google reaction(() => addedProduct.get(), productInfo => { // ...отправка данных в гугыль }) // File 2: Yandex reaction(() => addedProduct.get(), productInfo => { // ...отправка данных в яшу }) // File 3: VK reaction(() => addedProduct.get(), productInfo => { // ...отправка данных в вк }) addedProduct.set(...); ... addedProduct.set(...);
Alex
Хотя ладно, нафиг, не хочу холиварить в выходной,а то ща придется же за примерами лезть, доказывать, сдаюсь)
artalar
Есть чат на PWA? Вопрос могу ли я из PWA читать clipboard (когда захочу), естественно запросив права на это.
Kirill
PWA — русскоязычное сообщество Русскоязычное сообщество, посвященное прогрессивным веб-приложениям (Progressive Web Apps, PWA) и связанным технологиям, таким как Trusted Web Activities (TWA), Service Workers и др. https://t.me/pwa_ru
artalar
Чета я там заблокирован 🤔🤔🤔🤔
Богдан
Там нужно слушать событие а не изменение значений
В mobx нет событий потому что вместо них можно использовать переменные состояния и сущность "событие" становится избыточной
Богдан
а введение этой сущности может дать какие-то преимущества?
А зачем? Уже есть один способ различным обработчикам отреагировать на новою информацию. В данном случае изменение переменной в которую записывается информация о событии и является тем самым способом вызвать соответствующих обработчиков этого события
Avin
Ребят, подскажите, тут всё ок с этим кодом?
Alexey
Линтеры могут ругаться на создание arrow functions, но вряд ли это приведет к реальным проблемам с производительностью
Avin
не, это я сам в квадратик обвел) меня смущает этот момент как раз
Alexey
Не, расслабься, все хорошо :)
Alexey
Только зачем change language
Alexey
Я имею ввиду ты сразу i18n можешь использовать в теле функции
Avin
а ну да) точно 😄
Артем
не, это я сам в квадратик обвел) меня смущает этот момент как раз
Имхо, я бы вынес в сам обработчик выдергивание языка, а не создавал на каждую кнопку отдельный обработчик, суть которого - просто прокидывать значение lng
Артем
Как вариант, вполне. К слову, а зачем тебе key назначать кнопке? Он используется?
Avin
без него ругается index.js:1 Warning: Each child in a list should have a unique "key" prop.
Orest🇺🇦
Есть кто из находящихся здесь кто пишет на react-native и использует mobx-devtools ?
Артем
без него ругается index.js:1 Warning: Each child in a list should have a unique "key" prop.
О как, не сталкивался с таким, ну раз так. То что делать, пусть будет. Может сможешь тогда его как аттрибут кнопки читать в обработчике? Тогда и data не потребуется.
Timofei
так?
я бы еще хэндлер в useCallback хук обернул
Китикет
Ребят, подскажите, тут всё ок с этим кодом?
Ты же функцию в button прокидываешь, вот если бы прокидывал так в компонент, в котором внутри еще 10 компонентов, тогда была бы гора лишних ререндеров, а щас обернуть в useCallback будет даже хуже