Yurii
Привет, в каких случаях вы используете getItemLayout ?
Из доки - "Adding getItemLayout can be a great performance boost for lists of several hundred items." Поэтому если размеры элементов списка статичные и нет ничего лишнего в сепараторах, то использую.
Bogdan
Селекторы как в цсс возможно сделать? Или тут никак
Gena
Селекторы как в цсс возможно сделать? Или тут никак
Не возможно из коробки. Не нужно, потому что будет бардак в коде и будет сложно определить что откуда берется. К примеру покопайтесь в исходниках native-base, там темы иерархические и даже в такой простой реализации это всё очень запутанно. Я когда-то писал модуль тоже с очень простой симуляцией каскадов: https://www.npmjs.com/package/react-native-stylable, но после попытки использовать на практике отказался от этого по двум причинам: первая и главная уже озвучена выше - бардак в коде, вторая - это очень медленно если чисто на js реализовывать, надо в натив уходить, а тогда всё ещё хуже становится, потому что тогда применяться стили будут не к компонентам, а только к нативным нодам, как в DOM.
Bogdan
нормальные люди в верстке обычно делают отступы родителем, что бы елемент юзать везде и ничего не поломалось, я хз как без этого возможно верстать
Gena
Так для этого полноценный каскад не нужен, система декларативных селекторов, почти язык программирования - тоже... Это вопрос построения своего набора удобных компонентов в приложении )
Bogdan
тоесть свой набор компонентов?
Vitaliy
Не возможно из коробки. Не нужно, потому что будет бардак в коде и будет сложно определить что откуда берется. К примеру покопайтесь в исходниках native-base, там темы иерархические и даже в такой простой реализации это всё очень запутанно. Я когда-то писал модуль тоже с очень простой симуляцией каскадов: https://www.npmjs.com/package/react-native-stylable, но после попытки использовать на практике отказался от этого по двум причинам: первая и главная уже озвучена выше - бардак в коде, вторая - это очень медленно если чисто на js реализовывать, надо в натив уходить, а тогда всё ещё хуже становится, потому что тогда применяться стили будут не к компонентам, а только к нативным нодам, как в DOM.
Ну не знаю, имхо, у native-base (на самом деле изначально у shoutem, NB её адаптировали и допилили, пакет так и называется native-base-shouthem-theme, если правильно помню) вполне удобно организованы стили. по крайней мере из того что я тестировал, когда мы выбирали подходящее решение. Плюс они умеют адаптировать стили на основе boolean-свойств компонента (без каких-либо доработок логики, конкретная адаптация стиля задаётся в теме), у себя в компонентах это тоже можно реализовать достаточно просто, но тут из коробки и всё что требуется уже абстрагировано. Но вообще да, зачастую компоненты свои у всех в итоге. Даже когда NB под капотом ))
Gena
Ну не знаю, имхо, у native-base (на самом деле изначально у shoutem, NB её адаптировали и допилили, пакет так и называется native-base-shouthem-theme, если правильно помню) вполне удобно организованы стили. по крайней мере из того что я тестировал, когда мы выбирали подходящее решение. Плюс они умеют адаптировать стили на основе boolean-свойств компонента (без каких-либо доработок логики, конкретная адаптация стиля задаётся в теме), у себя в компонентах это тоже можно реализовать достаточно просто, но тут из коробки и всё что требуется уже абстрагировано. Но вообще да, зачастую компоненты свои у всех в итоге. Даже когда NB под капотом ))
Сейчас попробую измерить изменения в производительности. Мы в течение последних двух недель на проекте потихоньку избавляемся от native-base и она сейчас "островками" только осталась... в каких-то блоках Text оттуда, где-то ещё что-то... А была везде - drawer, navigation header, screen container и т.п. В целом я бы даже остался с ней, возни меньше, но в этом проекте её умудрились начать использовать без создания кастомной темы и вся кастомизация шла через стили, что как бы убило весь смысл её использования, только мешающее поведение осталось типа невозможности избавиться от хэндлинга статусбара в хидере и т.п. Как раз собирался оценить как что поменялось.
Дмитрий
Ребят, привет, скажите пожалуйста - есть тут такие, кто подключал нативный модуль яндекс касс к приложухе?
Дмитрий
или может кто нибудь знает, от чего приложение на симуляторе девайса (в моем случае - ios) может слетать и закрываться без ошибок
Oleg
всем привет, использую @react-native-community/slider для кастомного выбора времени, нужно валидировать время (не давать выбирать прошлое) на onValueChange вешаю валидацию, value не меняется но вне зависимости от этого визульно слайд отрпбатывает
Maxim
всем привет вопрос такой подключил redux но он не обновляет компонент я компонент подписал к redux через conect по клику меняю просто масив а он не обнолвляет даже componentDidUpdate не отрабатывает в чем может бытть причина такого поведения??
Коровийвирус
с expo можно создать проект с тсом сразу как в cra?
Коровийвирус
Да
как?
Anonymous
Там консольный интерфейс
Anonymous
И можно выбрать стартовый проект с тс
Коровийвирус
И можно выбрать стартовый проект с тс
блин, я в git консоли делал из-за этого у меня этот интерфейс не показывался
Коровийвирус
спасибо
Gena
Сейчас попробую измерить изменения в производительности. Мы в течение последних двух недель на проекте потихоньку избавляемся от native-base и она сейчас "островками" только осталась... в каких-то блоках Text оттуда, где-то ещё что-то... А была везде - drawer, navigation header, screen container и т.п. В целом я бы даже остался с ней, возни меньше, но в этом проекте её умудрились начать использовать без создания кастомной темы и вся кастомизация шла через стили, что как бы убило весь смысл её использования, только мешающее поведение осталось типа невозможности избавиться от хэндлинга статусбара в хидере и т.п. Как раз собирался оценить как что поменялось.
Ну вот смотрите, тут конечно native-base не доконца выпилен и менялось не только это. Но тем неменее, что есть, проект живой. Померил два экрана, условно две версии "old" -> "new". В старой версии native-base используется относительно широко, главное для хидера. Иерархия это вложенность компонентов (я их брал выборочно). Root - это корень дерева рендера, оно большое, потому как react-navigation. Эран с тяжелым списком и табами (они остались на native-base): - Root: 92ms -> 84ms ⁃ PollsListScreen: 66ms -> 59ms ⁃ ScreenHeader: 22ms -> 6ms (вот здесь выпилился native-base) ⁃ ScrollableTabView: 42ms -> 49ms ⁃ Styled(DefaultTabBar): 10ms -> 12ms ⁃ Styled(Tab): 26ms -> 29ms ⁃ ActivePollsTab: 24ms -> 27ms (здесь менялась логика но чуть-чуть, из-за этого видимо выше по дереву какие-то изменения, не анализировал подробно) Экран с почти статическим контентом (там тоже остался native-base, но в виде пары Text): - Root: 70ms -> 37ms - HelpScreen: 39ms -> 15ms - ScreenHeader: 22ms -> 4ms (да-да, тот же самый ScreenHeader, что и выше) Картинки (только кусочки, вообще с этим нормально можно только динамически работать в профайлере): - старый: http://vovkasm.skitch.vovkasm.org/PollsListScreen-v1_0_2_23CF9495.png - новый: http://vovkasm.skitch.vovkasm.org/PollsListScreen-v1_1_0_23CF9FB2.png
George
кто-нибудь сталкивался с проблемой, что при установке через yarn. Потом отваливаются либы и надо устанавливать заново?
Jurij
Физику знает кто-нибудь?
Sergey
Смотря какую
Sergey
Физику знает кто-нибудь?
Bogdan
в рн с помощью ref можно получить позицию елемента? или вообще текущую прокрутку на странице?
Daniil
ты X/Y можешь получить через measureInWindow у рефа нужного
Gena
в рн с помощью ref можно получить позицию елемента? или вообще текущую прокрутку на странице?
С помощью ref можно получить дескриптор нативной ноды, дальше используя его можно получить её метрики, как выше написали через модуль UIManager. UIManager.measure - выдаст позицию и размеры ноды относительно непосредственного родителя, как onLayout UIManager.measureInWindow - выдаст позицию относительно "окна" приложения UIManager.measureLayout - выдаст позицию относительно другой ноды Все методы асинхронные и могут выдать фигню, если нода успела удалиться или наоборот ещё не отрендерилась, т.к. в отличие от onLayout выполняются не в потоке лэйаута, а в UI thread.
Gena
За документацией в 0.61 лучше сюда ходить - полнее будет: https://github.com/facebook/react-native/blob/0.61-stable/Libraries/ReactNative/NativeUIManager.js
GrafMine
https://github.com/react-navigation/navigation-ex/blob/master/packages/core/src/__tests__/useNavigation.test.tsx#L115 такой вопросик, почему тут ошибка должна быть ? не льзя вызывать useNavigation() внутри функции ?
George
Кто-нибудь такого покемона ловил с reanimated-bottomsheet
George
Наиль
Как правильно интегрировать телеграмм чат в приложении на expo
Sulpiride
Ребят, а зачем нужен react native web, если у нас и так есть обычный react?
Anonymous
Ребят, а зачем нужен react native web, если у нас и так есть обычный react?
Чтобы реакт нативное приложение в браузер портировать
Anonymous
Доброй ночи 😊 Подскажите, пожалуйста, подходит ли React для разработки интернет-магазина? И какая может быть стоимость?
Anton
Доброй ночи 😊 Подскажите, пожалуйста, подходит ли React для разработки интернет-магазина? И какая может быть стоимость?
Очень подходит, т.к не требует специфичных фич платформы Стоимость разная, в зависимости от сложности и требований. Условный озон пилят десятки людей уже много лет, но какой нить магазин цветов вполне реально сделать быстрее
Artem
Нужно ли использовать reselect при фильтре массива? Ситуация следующая, есть какой-то массив и поле ввода для поиска куда вводятся рандомные буквы и соответственно появляются новые картинки, или для этого реселект не предназначен и лучше делать это в компоненте?
Антон
Подскажите как решить проблему Создал компонент, прокидываю туда кучу пропсов, но при рендере у меня все падает и ругается на один из пропсов что он undefined, хотя в консоле я вижу что он есть Такое ощущение как будто эти пропсы не успеваются проброситься до конца и уже начался рендер
Dmitriy
Код?
Антон
<ScheduleWorkouts trainClasses={this.props.trainClasses} trainers={this.props.trainers} workouts={this.props.workouts} currentDateIndex={this.currentDateIndex} workoutsCarouselRef={this.workoutsCarouselRef} datesCarousel={this.datesCarouselRef} setCurrentWorkout={this.setCurrentWorkout} />
Антон
Антон
вот на trainClasses он падает и говорит что он undefined
Dmitriy
У тебя же там this.trainClasses без пропсов
Антон
это я уже там изгалялся как могу, было прописано с пропсом
Антон
и в самом начале если делать проверку помимо workouts на эти trainClasses, то тогда все проходить Но помоему это не правильно проверять каждый пропс
Dmitriy
Может у тебя эти trainClasses с самого верха загружаются сначала? И после чего прокидываются, а в начале может они undefined
Антон
может я что-то не правильно понял, но все состояние у меня хранится в Redux, в корневом компоненте я сначала получаю запросом все что мне надо с сервака, кидаю в стор, а потом оттуда уже в пропсы прокидываю в сам этот компонент
Антон
вот запрос делаю
Антон
а вот тут все для Redux прописано
Dmitriy
А в момент когда идет запрос твой компонент то рендерится уже?
Антон
нет, там проверка стоит на loading как раз
Антон
вот
Vitaliy
вот
он как раз рендерится пока loading == true
Антон
пока loading == true крутится прелоадер
Vitaliy
пока loading == true крутится прелоадер
да, сорь, пропустил кусок
Антон
возможно проблема в объеме данных, все массивы достаточно большие и в этом вероятно проблема, но все равно как то странно
Dmitriy
А в редаксе инишиал стейт какой для них?
Антон
пустота
Антон
дело в том что проблемы начались когда я перенес карусель в отдельный компонент, когда карусель была в корневом компоненте то все работало
Vitaliy
а вообще мне что-то подсказывает что в this.props.trainClasses[workout.trainClass] просто такого не находит. типа trainClasses.undefined какой-нибудь запрашивает
Vitaliy
на этом экране в рендере в консоль workout.trainClass что выведет
Vitaliy
в общем похоже просто что для какого-то из workout в trainClasses[workout.trainClass] в этот момент нет ничего. поэтому при попытке взять .title от undefined всё падает
Антон
Как это происходит?)
Mykola
вот запрос делаю
а где инициализируется loading = true?
Антон
в корневом компоненте где у меня подключается компонент карусели, не лоадинге дело, когда карусель была не компонентом, была вставлена прям в коде корневого то тогда все работало Все поломалось когда карусель перенс в отдельный компонент
Антон
null ?
так написано ж что он undefined
Антон
Нашлас проблема ) невнимательность, там две карусели юзал, одна для даты другая для тренировок, а пути прописал в к одному компоненту, поэтому и не хватало пропсов Пути поправил и все заработало Ссори ребят )
Дмитрий
Всем привет, подскажите пожалуйста, как можно добавить функционал при котором при сканировании qr кода обычной камерой предлагало открыть мое приложение?
Дмитрий
Суть в том что мое приложение генерирует qr с определенными данными и при его сканировании с приложение или с месенджера должно предлагать открыть мое приложение если оно установлено
Дмитрий
Спасибо, буду пробовать
Saken
Что лучше юзать