Dr
Еще раз привет. Я опять с той же проблемой more than one library with package name 'com.reactlibrary'. Если нашел библиотеку из-за которой конфликтует. Что бы пофиксить достаточно ли поменять package в манифесте? или придется поменять везде внутри java/com где упоминается 'com.reactlibrary'?
Vladimir
Sergey
Всем привет!
Гайс, вопрос такой возник.
кто-то крутил когда-нибудь к react native трансляцию? Ну, чтобы снимать как медиарекордером чанки с камеры с интервалом в 2 секунды и слать их в апи в base64?
Буду очень благодарен за консультацию 😉
Alexander
Что лучше для алиасов в импортах использовать? babel-plugin-module-resolver работает, только если запускать yarn start —reset-cache Перед запуском проекта на платформу. Есть что получше?
Gena
Gena
Не совсем алиасинг конечно... но кое-что
Alexander
Gena
Мы используем с ts... но не алиасим в полном смысле... у нас всё приложение - один пакет верхнего уровня... ща конфиг выложу.
Nikolai
Sergey
получил поток в base64 на андройде, но пока что я не могу его остановить
запускается запись и блокируется ui
Nikolai
а где запускаешь? пробуй в worker'e
Nikolai
тогда не будет блокироваться ui
Nikolai
если суть конкретно в этом
Nikolai
но опять же вопрос, что конкретно блокирует ui
Sergey
Суть вот в чем. Сейчас вся серверная архитектура завязана на цепную конвертацию webm-чанков, которые прилетают с mediarecorder. Я руковожу пилением этого всего на JS+node. Там все уже работает заебцом. А вот мобила буксует уже вторую неделю
Nikolai
Буксует по причине? Что именно буксует то
Nikolai
Когда идёт отправка данных на серв, ui тормозится или что?
Gena
Код в папке App, весь кроме двух файлов, они в корне: index.js и config.js. index.js:
import './config'
import { main } from 'App'
main()
Модули файлы внутри приложения почти везде импортятся по абсолютному пути, к примеру: import theme from 'App/theme'
Для этого:
1. package.json внутри папки App с содержимым: { "name": "App" } (Это для metro и RN)
2. В tsconfig.json: "baseUrl": "." (это для ts)
Всё... мне казалось ещё что-то для jest надо, но ни в rn-cli.config.js, ни в jest.config.js не вижу сейчас )
Gena
а как заставить чтоб такое шло в обработку componentDidCatch
> Error boundaries catch errors during rendering, in lifecycle methods, and in constructors of the whole tree below them.
Если я правильно понял, то здесь не перечислен случай, когда поток выполнения рождается "извне", как например хендлер нажатия на кнопку или то, что setInterval дернет... т.е. оно относится только к синхронному коду...
Поэтому ответ - никак, или "руками" ставить в нужных местах try ... catch и дергать его...
Но в js внутренностях именно React я плохо разбираюсь и могу ошибиться (вот этот функционал, мы к примеру вообще не используем)
Gena
Сделать его touchable... но... вы клавиатуру скрывать хотите? )))
A
а белый фон и hello world - это что? просто view и text?
A
вот, я тоже думаю в сторону touchable
A
TouchableWithoutFeedback
Gena
Не понял... что значит "привязался"? )))
Gena
А в качестве мыслей по скрытию клавиатуры, тут пришло в голову:
Если в RN правильно bubbling работает, то по идее можно в TouchableWithoutFeedback обернуть около-рутовый элемент, который весь экран перекрывает и его использовать для скрытия клавиатуры. Т.к. тачи он будет ловить только те, что вложенными touchable не ловятся... но я не пробовал такое делать... если bubbling не работает, то это сглючит.
Gena
А...
Gena
По ходу они так сейчас это и трактуют...
https://github.com/facebook/react-native/blob/0.56-stable/Libraries/Utilities/dismissKeyboard.js#L18
Gena
Эта ф-ция дергается по Keyboard.dismiss
Gena
Т.е. если я правильно понял, у них сейчас в принципе нет состояний "есть активное поле с фокусом и нет клавиатуры" и "нет фокуса нигде, а клавиатура есть"... по крайней мере концептуально. Я прям не уверен, что это совсем уж правильно, но это надо в нативные SDK лезть и копаться... долго...
Gena
Может и было... они там за год в этом районе много кода меняли...
Я не уверен, что вот это всегда так жестко связанные вещи (клавиатура и фокус)...
К примеру, на экране два приложения на iPad в split view и в одном нет фокуса на текстовом поле, а в другом есть и клавиатура... что с размерами первого приложения? должно оно как-то на это реагировать?
Ещё вопрос... по реализации уже... они вот трекают фокус в JS в синглтоне сейчас вот здесь: https://github.com/facebook/react-native/blob/0.56-stable/Libraries/Components/TextInput/TextInputState.js... А ничего, что теоретически можно иметь в одном приложении на одном экране два Root View с двумя разными инстансами бриджа... по сути два полных экземпляра RN (я понимаю, что это неэффективно по памяти и т.п. но возможно же... может изоляция нужна на уровне JS)... И что? Весь этот трекинг фокуса идет нафиг...
Denis
Кто-то сталкивался с http://prntscr.com/klbztk ?
Denis
Gena
Это ios или Android?
Denis
Gena
ios
Откройте проект в Xcode, проверьте что линкинг есть (как же в xcode сложно описывать путь до настроек проекта, т.к. нет названий меню ))))
1. Ткните в проект (синяя иконка в навигаторе слева)
2. Ткните в вкладку General
3. Прокрутите вниз, там будет список библиотек (типа libReact.a, libRCTActionSheet.a и т.п.) в нем должна быть libBVLinearGradient.a или что-то типа
Denis
Gena
А, попробуйте перед этим сделать Clean (меню Product -> Clean)
Denis
Gena
Ух ты! Первый мой респект facebook'у... они за 24 часа смержили пулл реквест в react-native-fbsdk - неожиданно https://github.com/facebook/react-native-fbsdk/pull/390
Вот бы они так же быстро в RN реагировали...
Gena
А кто мешает свой PropsSheet написать? там кода на один экран...
Gena
Я помню да... но это не должно так работать ))))
Gena
Это не передача ф-ции... это её вызов ))) она возвращает объект, который флеттится и мержится через Object.assign в объкт лежащий по ключу textStyle
Gena
Весь этот код выполняется до StyleSheet.create
Denis
Gena ты бог, на счет того что посоветовал через xcode запустить
Gena
И я таки понял вопрос... сорри, сразу не сообразил... нет, нельзя... StyleSheet - должен быть глобальным объектом. Если надо туда пропсы передавать, то его надо конструировать внутри render... но это жутко медленно будет
Gena
Denis
Aleksei
Gena
да эт вообще какие то рекордные сроки для опенсорса)
Ага... но я рад, что не форканул его с концами, как react-native-vkontakte-login, осталось дождаться релиза в npm и можно переключаться с установки с git, обратно.
А вот react-native-share таки придется форкануть (((
Потому что там такое г. в коде, что я пожалел, что вообще это в проект допустил... притом большая часть его кода нам не нужна...
Maksim
Как называется такое диалоговое окно? Чет не могу найти в документации :(
ana 🪢
Maksim
Nikita
react-native-maps. Карта прогружается нормально на всех апи, кроме 23. То есть, не грузится совсем. Видно только лого гугла, и все. Уже пробовал: менять версию апи ключа, градла, делать релизную сборку. Суть одна: карта работает на всех ведройдах, кроме шестого. Причём, какими-то магическими тыками по приложению всё-таки можно случайно заставить что-то загрузиться. Но все равно работает некорректно. Есть идеи или опыт?
Eugene
Nikita
чей ты
Сравниваем то что выбрано в пикере и что выернул IOSPicker при onChange
чей ты
чей ты
чей ты
Что это за магическая дата 24-25 Сентября 1989
Ilshat
Ivan
там часы ведь указаны, 20+3=23, 21+3=24=00 след дня
Denis
Ребята, а кто может подсказать как правильно работать с размерами элементов/шрифтов в RN, а то я постоянно смотрю в эмуляторе iphone 8 и решил открыть iphone SE и присел
A
а кто пилил очередь http запросов для своих react-native приложений?
A
@savelichalex поделитесь опытом
Gena
Я заметил , почему в пикере выбрано 24, а результат 23 ?
Потому что пикер вернул вам объект Date с датой, а не выбранные значения по раздельности. Этот объект сериализуется, как описано... ммм... в коде JSC той версии, которая у вас работает. Как видно из примера, это совпадает с https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toString
Gena
С датами в JS вообще много проблем... основная, на которую я постоянно напарываюсь - отсутствие интерфейса к текущей таймзоне... в смысле движок JS её знает и правильно с ней работает, а задать её извне и управлять ей на уровне JS вы не можете (
Gena
Мы если что... сейчас с датами только через moment в модели работаем... соотвественно все расчеты/сериализация через него...
чей ты
Gena
Решил проблему установкой timeZoneOffsetInMinutes={0}
Скорей всего нет. Потому что теперь ваши пользователи выбирают Date в Гринвиче. То, что вы сделали решает проблему, только если вы из возвращенного объекта достанете компоненты и будете отдельно использовать, а про сам Date забудете...
Gena
Ребята, а кто может подсказать как правильно работать с размерами элементов/шрифтов в RN, а то я постоянно смотрю в эмуляторе iphone 8 и решил открыть iphone SE и присел
Тут нет правильного решения... тут есть много решений разной степени паршивости... и это общая проблема и для веб и для мобилок, независимо от использования RN.
Надеюсь остальные тоже поделятся своими решениями.
Мы так делаем:
1. Считаем на старте приложения константу, которая домножается на все размеры (константа считается так, чтоб в небольших пределах компенсировать недостаток площади на мелких экранах, т.е. там она меньше 1, для больших экрананов она чуть больше 1 чтоб совсем уж много пустоты не образовывалось... 1 - это эталонный экран, мы обычно приводим к ней тот экран, на основе которого дизайнер рисовал дизайн, чтоб из спеков размеры один-в-один в код можно было переносить)
2. Сразу пытаемся верстать гибко... это подразумевает постоянные неудобные вопросы дизайнеру/заказчику, типа... а как этот элемент будет выглядеть, если имя пользователя будет размером с роман "Война и мир" без пробелов... )
3. Периодически тестируем в разных симуляторах/эмуляторах на предмет необходимости поправить что-то...
Gena
А ещё, о ужас, пользователи могут проставлять в настройках своих девайсов увеличенный шрифт )))
Denis
Gena
🤔
Это фактически делает невозможной жесткую верстку )
Denis
Тут нет правильного решения... тут есть много решений разной степени паршивости... и это общая проблема и для веб и для мобилок, независимо от использования RN.
Надеюсь остальные тоже поделятся своими решениями.
Мы так делаем:
1. Считаем на старте приложения константу, которая домножается на все размеры (константа считается так, чтоб в небольших пределах компенсировать недостаток площади на мелких экранах, т.е. там она меньше 1, для больших экрананов она чуть больше 1 чтоб совсем уж много пустоты не образовывалось... 1 - это эталонный экран, мы обычно приводим к ней тот экран, на основе которого дизайнер рисовал дизайн, чтоб из спеков размеры один-в-один в код можно было переносить)
2. Сразу пытаемся верстать гибко... это подразумевает постоянные неудобные вопросы дизайнеру/заказчику, типа... а как этот элемент будет выглядеть, если имя пользователя будет размером с роман "Война и мир" без пробелов... )
3. Периодически тестируем в разных симуляторах/эмуляторах на предмет необходимости поправить что-то...
1. Это подразумевает, что вы описываете какую-то функцию ~`scale` которая принимает размер и возвращает что-то типа size * 1.3 (где 1.3 это константа для определенного pixelration) ?
Gena
В любом случае это арт уже )))