Aleks
привет, есть ли способ вызвать метод реакт из нативного кода? как @reactmethod только в обратном направлении.
Ilya
Здравствуйте! В РН не очень. Есть сервак на Го, умеет рассылать SSE с новой инфой. Как реализовать аналог PUSH-уведомлений? Apple Push Notifications не хочу пользовать.
Ilya
Как сделать сервис в бэкграунде, который бы постоянно слушал адрес и ждал инфу? Для SSE использую react-native-event-source
Никита
привет, есть ли способ вызвать метод реакт из нативного кода? как @reactmethod только в обратном направлении.
ну в голову приходит emmiter. В js подписываешься на событие, а в нативке можно его отправить
Gena
привет, есть ли способ вызвать метод реакт из нативного кода? как @reactmethod только в обратном направлении.
Для iOS https://github.com/facebook/react-native/blob/0.57-stable/React/Base/RCTBridge.h#L127 Для Android https://github.com/facebook/react-native/blob/0.57-stable/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java#L43 Но тут могут быть засады в следующих версиях, т.к. могут поменять api, если это в fabric и в новый код на c++ не ляжет
Gena
Только да, не метод React... а просто ф-цию в js
Aleks
Для iOS https://github.com/facebook/react-native/blob/0.57-stable/React/Base/RCTBridge.h#L127 Для Android https://github.com/facebook/react-native/blob/0.57-stable/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java#L43 Но тут могут быть засады в следующих версиях, т.к. могут поменять api, если это в fabric и в новый код на c++ не ляжет
Спасибо, посмотрю. Еще интересна такая тема: что из себя представляют экраны в реакт-нейтив? Особенно в отношении андроид платформы. Там есть MainActivity в папке с проектом реакт-нейтив, если этот экземляр не будет создан, то я не смогу вызвать js метод? (пс: при это у меня живет MainApplication)
Gena
Спасибо, посмотрю. Еще интересна такая тема: что из себя представляют экраны в реакт-нейтив? Особенно в отношении андроид платформы. Там есть MainActivity в папке с проектом реакт-нейтив, если этот экземляр не будет создан, то я не смогу вызвать js метод? (пс: при это у меня живет MainApplication)
Умм... вообще тут очень много надо написать, я надеюсь вы большую часть сами раскопаете в интернете/исходниках. Кратко - есть "бридж", их может быть больше одного, но это нонсенс. В бридже сидит инстанс JSC (в контексте бриджа весь JS код выполняется в одном контексте и шарит globals), JSC однопоточный, помним. К бриджу так же прицеплена система нативных модулей, вроде они не могут безопасно шариться между разными инстансами бриджа. Есть "окошки" в которых можно рисовать из js. Это инстансы RootView - корень иерархии View которую менеджерит модуль UIManager. На стороне js, каждому RootView соответствует React компонент. Т.е. RootView это аналог того html элемента в который маунтится react-приложение в вебе. RootView создаются из натива. В том приложении, что RN генерит из шаблонов. В нативе на Android создается 1 бридж и 1 RootView (через обвязку из единственного Activity), в iOS так же. Есть другие схемы работы, к примеру react-native-navigation менеджерит по RootView для каждого экрана.
Gena
Работа в такой схеме очень плохо ложится на концепцию Activity в Android, поэтому, думается менеджерить несолько артивити с RootView и общим бриджем будет довольно проблематично... т.к. активити может открыться в чужом процессе и бридж зашарить не удастся... он будет создан заново, как следствие весь js код будет выполнен заново... как при этом жить я не знаю... поэтому судя по всему на Android проще строить архитектуру с single activity...
Gena
И да, отвечая на прямой вопрос. Экраны в RN из себя ничего не представляют, он по умолчанию один и является на стороне JS компонентом зарегистрированным через AppRegistry.registerComponent а на стороне натива RootView, которому сказали отображать компонент с именем использованным в registerComponent
Peter
Ребята, кто работал или сталкивался с ExternalAccessory.framework в iOS отпишите!
Dmitry
Если у меня есть List и ListItem. IListItemProps и есть IListProps, пропсы в ListItem прокидываются из List, надо ли мне дополнительно описывать пропсы из IListItemProps внутри IList или можно сделать например IListProps extends IListItemProps
Dmitry
просто в IListItemProps больше пропс чем требуется описать в IListProps
Danil
https://github.com/react-native-community/react-native-blur (мы его не использовали раньше из-за того, что на android не работал, но сейчас гляжу - вроде заявлена частичная поддержка)
блюр тоже не понятное решение, к тому же блюр одной интенсивности и неполучился сделять мягкий переход
Danil
Можно пытаться использовать градиентный текст, но больно много возни будет
у меня идет контейнер 200 шириной, в нем Animated.ScrollView, и только потом уже в нем Text’s, а пакет не хочет работать на контейнере
Danil
а оборачивать кадлый Text в градиет и потом при скролле ScrollView менять оффсет у градинета, это жесть
Danil
я даже не уверен, что это не будет не тормозить
Danil
а оборачивать кадлый Text в градиет и потом при скролле ScrollView менять оффсет у градинета, это жесть
это конечно дикое извращение, смотреть какой Text на краю и у него смещать оффсек градиета при скролле ScrollView
Peter
Ребята подскажите
Peter
вот есть модуль https://github.com/dbolcsfoldi/react-native-external-accessory
Peter
он не поддерживает носители по блютузу
Peter
а мне нужны именно они. как мне обойтись без этого модуля?
Peter
подключаю ExternalAccessory.framework и прописываю разрешение в info.plist, но не помогает
Alex
Як
Peter
???
Anonymous
как вам react native?
Славка
как вам react native?
нормально)
Anonymous
нормально)
стоить учить? или лучше java?
Andrey
Привет! Прошу помощи. У меня отображается список, в каждом списке новый список, можно создать новые, добавлять элементы , редактировать и т.д. Типа todo. Как я могу сделать оффлайн хранение данных структуры типа lists = [ {name, title, subList: { name, title } }, {name, title, subList: { name, title } }, ... ] ? в голову не приходит как сделать из этого строку для asyncStorage. Или может у кого-нибудь есть ссылочка полезная по работе с памятью телефона для react native? Сейчас пыхтел с localMongoDB, в конце концов так ничего и не понял
Славка
зависит от того, чем хотелось бы заниматься)
Peter
ааа помогите ктонибудь разобраться с ExternalAccessory.framework !!!
Dmitry
на скорую руку
Дмитрий
Всем привет! Ребят подскажите, как работать с куками в react-native?
Alexander
Здравствуйте. Использую expo Проблема в том, что он не перезагружается когда я вношу изменения. А вроде бы должен, да? Например дописал немного кода, сохранил, а экспо ничего не делает. Андроид подключен по LAN через QR код. Приходится убивать процесс expo, запускать снова, коннектится снова с телефона.
Alexander
потряси телефон включи лайф релоад
В expo же задействованы watchers по дефолту. Он должен сам по идее следить за файлами которые изменились и запускать заново bundle. Только он ничего заново не запускает когда сохраняю новые исходники.
Andrey
В expo же задействованы watchers по дефолту. Он должен сам по идее следить за файлами которые изменились и запускать заново bundle. Только он ничего заново не запускает когда сохраняю новые исходники.
нужно зайти в меню разработчика на телефоне и включить лайф релоад. Если ты с эмулятором - нажми ctrl+m, если с телефоном - потряси и выбери там enable live reload. может быть в этом проблема.
Andrey
https://gist.github.com/quarrant/338ff0a63fc30085be45fde488cda232
Спасибо очень очень большое, буду разбираться!
Дмитрий
по конкретне вопрос можно?
нужно отправить куки на сервер, как это сделать? порекомендуйте либу или можно пример простой.
Danil
из коробки идут 2 интерфейса, fetch и xmlHttlRequest, они единтичны с вебом
Danil
туда пихаешь свои хедеры {Cookie: ‘…’}
Danil
fetch(‘/your-url’, { headers: { 'Cookie': 'csrftoken=abcdefghijklmnop' } }) .then(response => {}) .catch(error => { console.log('request failed', error); });
Danil
читай про fetch/xmlHttpRequest из веба
Azamat
Всем привет! Подскажите пожалуйста, Geolocation встроенный в РН нормально работает? У меня getCurrentPosition ничего не возвращает.
Azamat
componentDidMount() { navigator.geolocation.getCurrentPosition( (position) => { this.setState({ latitude: position.coords.latitude, longitude: position.coords.longitude, error: null, }); }, (error) => this.setState({ error: error.message }), { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }, ); }
Peter
кто знает как найти место где вызывается то, что отбражается в логах в xcode?
Stas
Stas
Кто знает как поменять цвет курсора TextInput в андройде?
Stas
У меня он всегда зеленый
Stas
https://snack.expo.io/@johnman25superstar/bad-bananas
Stas
ну вот, не работает чет
Stas
все равно зеленый
Serhii
в styles.xml добавить <item name="colorControlActivated">@color/colorPrimary</item>
Serhii
на андроиде
Stas
туда белый вставил, может не там тему прокинул
Stas
да, мой косяк
Stas
А почему selectionColor не работает? Это баг? Или это решили не делать?
Stas
https://github.com/facebook/react-native/commit/0c91931adf15fb456e72d08dca872f632661b655
Stas
вроде был такой коммит
Alexander
Вы expo используете для дебага? Я просто ещё нахожу другую утилиту, create-react-native-app. Она устаревшая? Expo не даёт дебажить ничего от слова вообще. Запускается на порту 19001 в терминале, в браузере на порту 19002, а QR код даёт от порта 19000. Как результат - не открывается нужное приложение для дебага по воздуху. Оно за всё время открылось пару раз абсолютно спонтанно, и то связь рвётся когда телефон затухает надолго. Окей, я хочу запустить дебаг через ADB, подключаю телефон, пишу expo android иии открывается localhost:80. И ошибка соединения на телефоне. А в терминале ошибка Couldn't adb reverse: Invalid source port: 'null' Как вообще дебажить приложение в таких условиях, посоветуете что-то?
Nikita
Nikolai
А какая версия реакта?
разве это влияет?
Stas
разве это влияет?
Ну, у разных версий разный код
Stas
Разве нет?
Alexander
Вот. Почему оно всё на разных портах? В итоге открываю по QR коду и в итоге попадаю в ПРОШЛЫЙ проект, который я запускал с помощью expo на этом порту.
Alexander
Сейчас запущен новый проект в expo, но конекчусь автоматом к старому.
Alexandr
закрой все терминалы где у тебя експо крутится
Alexandr
и конекться всегда к 19000
Pasha
Рефакторингом
Gena
кто знает как найти место где вызывается то, что отбражается в логах в xcode?
Можно поставить символический бряк-поинт на вызов ф-ции NSLog (или в современном варианте os_log, или во что там оно раскрывается если макрос)...
Gena
Нет, я не помню... в справке по Xcode и в справке по lldb всё должно быть )