Alex
Просто спеки читать?
Volodymyr
В любом случае лучше чем документация, ничего не будет.
Volodymyr
Любые видеоуроки так или иначе сводятся к доке.
Alex
понял спасибо
Eugene
Товарищи, react-navigation tab bar в нем есть иконки, и иногда нажимаю на одну, открывается другая...куда копать ?
Eugene
https://github.com/react-navigation/react-navigation/issues/5007 🤔
Anton
Всем привет! Подскажите пожалуйста вот по какому вопросу: Делаю offline прилагу. Ввиду требований необзодимо работать с sql запросами. Мой выбор пал на react-native-sqlite-storage. Без проблем все настроил, подключил и решил, что напишу модуль, который, будет работать с SQL запросами и возвращать мне результат (не важно какого запроса). Написал вотчер саги (юзаю redux-saga)для определенных типов экшенов для всех типов запросов. Получись что-то вроде https://paste.ubuntu.com/p/NNCjTxzdRB/ Т.е я в саге достаю инстанс базы и делаю const data = yield call(QueryService, { db, query}) и не получаю вообще ничего... Более того, .then невозможен т,к мне executeSql возвращает undefined Если делать через callback https://paste.ubuntu.com/p/SKbQzDFNbP/ То console.log('results', results), безусловно, выведет данные, вот только обратно в сагу я их не прокину... Если кто-нибудь работал с react-native-sqlite-storage подскажите пожалуйста, как вы решали проблемы или посоветуйте альтернативу для работы с SQLite
Gena
Всем привет! Подскажите пожалуйста вот по какому вопросу: Делаю offline прилагу. Ввиду требований необзодимо работать с sql запросами. Мой выбор пал на react-native-sqlite-storage. Без проблем все настроил, подключил и решил, что напишу модуль, который, будет работать с SQL запросами и возвращать мне результат (не важно какого запроса). Написал вотчер саги (юзаю redux-saga)для определенных типов экшенов для всех типов запросов. Получись что-то вроде https://paste.ubuntu.com/p/NNCjTxzdRB/ Т.е я в саге достаю инстанс базы и делаю const data = yield call(QueryService, { db, query}) и не получаю вообще ничего... Более того, .then невозможен т,к мне executeSql возвращает undefined Если делать через callback https://paste.ubuntu.com/p/SKbQzDFNbP/ То console.log('results', results), безусловно, выведет данные, вот только обратно в сагу я их не прокину... Если кто-нибудь работал с react-native-sqlite-storage подскажите пожалуйста, как вы решали проблемы или посоветуйте альтернативу для работы с SQLite
Я бы скорее посоветовал выкинуть redux и использовать mobx... кол-во кода уменьшится, а структура может улучшится (но это уже от программиста зависит), а sqlite и его интерфейс тут ни при чем похоже... Но это так, мысли вслух, тут каждый сам решает
Gena
Кстати (посмотрел в сниппеты)... а вы знаете, что коллбэчный интерфейс элементарно транслируется в промисы и наоборот?
Anton
спасибо
Gena
👍
Gena
Я посмотрел, как это устроено внутри ScrollView (потому что он внутри себя умеет это делать) и понял что всё мега-сложно ))) Второй попыткой было такое. Я завернул всё не в TouchableWithoutFeedback, а в обычный View, которому повесил хендлер на onTouchEnd, который скрывал клавиатуру, если текущий таргет не был TextInput'ом (@savelichalex, пока вспомнил, это ещё одно место, где убивается возможность кастомных текст-инпутов, они там держат реестр всех собственных TextInput элементов и TextInput регистрируется там при маунте, что позволяет им отслеживать по event.target является ли target полем ввода текста). И это работает... ну почти... потому что делает немножко не то. На самом деле надо скрывать клавиатуру, не по окончании тача вне TextInput, а по окончании тача, если этот тач не был обработан кем-то... вот и пытаюсь сейчас понять возможно ли и как получить эту информацию
Кажется порешал проблему (и да, для того чтоб понять, пришлось переписать и немного упростить Touchable.Mixin и TouchableWithoutFeedback, вот может теперь из этого сделать не миксин, а что-то типа PanResponder и в PR... т.к. это бы решило проблему конвертации Touchable в нормальный класс) Короче, вся соль здесь: https://github.com/facebook/react-native/blob/0.58-stable/Libraries/Components/Touchable/Touchable.js#L379 в методе, который висит на onStartShouldSetResponder и возвращает true, если компонент "хочет" стать ответственным за тач. Вот если вот этот https://github.com/facebook/react-native/blob/0.58-stable/Libraries/Components/ScrollResponder.js#L174-L181 кусок кода из ScrollResponder перенести в тот метод, то всё начинает работать как надо. Т.е. вся соль в том, что компонент становится responder'ом только если клавиатура поднята, при этом внутренний скролл (если он есть) не ломается, т.к. отнимает у него право отвечать за тач в onMoveShouldSetResponder При такой схеме, можно действительно положить такой View на весь экран и он будет скрывать клавиатуру по тапу в пустое место, при этом внутренним ScrollView тоже надо выставлять опции для скрытия клавиатуры, т.к. они будут этим заниматься в своей области. В целом получается схема, которая с моей точки зрения более похожа на правильную.
Gena
неправильным остается только необходимость лазить в приватный TextInputState
Dr
Привет. Может кто работал в react-native-webrtc? как задизейблить удаленный стрим?
Volodymyr
Кто-то работал с react-native-router-flux ? По какой причине при переходе с екрана на екран, компоненты не открепляются, тоесть когда с екрана перешли на другой, потом вернулись на него опять то componentDidMount не вызвался ? Как побороть такое поведение ?
Gena
Кто-то работал с react-native-router-flux ? По какой причине при переходе с екрана на екран, компоненты не открепляются, тоесть когда с екрана перешли на другой, потом вернулись на него опять то componentDidMount не вызвался ? Как побороть такое поведение ?
Вообще это поведение следствие необходимости обеспечить анимацию обратного перехода. Вернее самый простой способ это сделать. Подумайте, ведь чтоб санимировать переход назад, на предидущий экран, нужно поиметь его уже отрендеренным (смещенным за пределы экрана) ровно в том же состоянии, в котором он был в момент ухода с него. Как это сделать просто? Если его unmount (отмаунтить? как это перевести то?) то, придется его опять маунтить, а если у него локальный стейт был? Как его восстановить? Да и время на рендер уйдет.
Volodymyr
Но тогда как мне проверить на момент отображения екрана, можно ли его видеть юзеру или нет
Gena
Обычно системы навигации для таких вещей предлагают собственные события или расширяют набор lifecycle методов реакта (что на самом деле более стремно, т.к. может сломаться с очередной версией)
Volodymyr
у роутера есть onChangeState и тд
Volodymyr
но по какой-то причне внутри него Actions.currentScene возвращает undefind ..
Volodymyr
Есть и у Сцен свой onEnter, on и тд, но они отрабатывают 1 раз
Gena
Вот, значит на этот onChangeState и надо повеситься и трекать изменение текущего экрана и дальше как-то передавать эту информацию в нужные компоненты... как точно это сделать, тут я помочь не смогу, не пользуюсь этой библиотекой.
Volodymyr
Парадокс в том что onStateChange тоже выполняется 1 раз ))
Gena
Парадокс в том что onStateChange тоже выполняется 1 раз ))
Я глянул в его ишьюсы... там что-то страшное делается... может поможет вам: https://github.com/aksonov/react-native-router-flux/issues/3358
Volodymyr
спасибо
Volodymyr
а каким роутером пользуетесь вы?
Gena
Никаким (самопальным)... ) Если что, рекомендую react-native-navigation
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
Господа пацаны, а почему при нажатии на лайк у меня тупа весь стор обнуляется?
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
там уже пофиксил, вместо item.id поставил индекс в массиве
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
но ситуация не изменилась
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
забыл сам экшн кинуть
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
ладно, проблему нашел, не возвращал остальной стейт, однако как теперь добавить лайк к конкретному посту?
Максим
всем доброго временни суток. Не подскажете, есть ли тут специальсты по RNN v2? Или вопрос не сюда?
Максим
Собственно проблема в topBar background component на iphone X (и других с ресничкой). Этот background не растягивается на весь навбар. В то время как цвет заливает весь навбар. Жедтый - это заливка, синий - ,ackground component
Максим
Максим
не, да и цвет навбара (желтый) виден ведь
Σуатск 👦 ягодная 🍒 свежесть ✨ для мытья конф 👪 Без ГМО
B
Всем привет. Ребята, подскажите пожалуйста. У меня есть форма. При нажатии на кнопку Отправить, у меня в цикле по одному значению из TextInput отправляется на сервер. И с сервера приходит сообщение об успехе или ошибке. Вопрос: Как сделать текст сообщения об ошибке под TextInput?
Petr E
<Text>{this.state.error}</Text>
ed.t
Народ, подскажите плиз как к задаче подойти, как это вообще решается в теории. Небольшой кусок нативного кода обрабатывает картинку и возвращает назад (допустим base64) Потом это надо заслать на сервер и юзеру уже дать ссылку на изображение загруженное на сервер
ed.t
вопрос в том, что лучше возвращать нативномой части обратно в реакт-нейтив чтобы потом это было удобно заслать на сервак
Никита
вопрос в том, что лучше возвращать нативномой части обратно в реакт-нейтив чтобы потом это было удобно заслать на сервак
если base64 возвращает то его и слать, но это в теории не сильно быстро. Если есть вариант сохранить в файл, то я бы так делал, и слал путь до файла
Aleksei
неправильным остается только необходимость лазить в приватный TextInputState
да ладно, не так уж то и костыльно все выглядит 🙂
Alexander
public componentWillUnmount(): void { this.alertsStream.unsubscribe(); window.clearInterval(this.interval); } Как на такое написать тесты?
ed.t
если base64 возвращает то его и слать, но это в теории не сильно быстро. Если есть вариант сохранить в файл, то я бы так делал, и слал путь до файла
вот вопрос, если я верну uri до изображения (хотя пока не понял как его получить нормальный), как потом заслать картинку на сервер? пока что подумал, что возможно стоит вернуть base64 из нейтив кода, из него сделать formData и уже это отправить на сервак
Никита
в formData и путь до файла подставить можно
ed.t
в formData и путь до файла подставить можно
а реакт нейтив сможет так отправить файл из системы? типо одну из фоток
ed.t
в смысле будет ли доступ к файлу
Никита
ну через image-picker картинка выбирается из галереи (нужен пермишен) и отправляется без проблем
Никита
если картинку сохранять в кеш прилки то и пермишен не потребуется
ed.t
понял, тогда надо решить траблу чтобы вернуть нормальный урл до файла из нейтив кода в реакт-нейтив
ed.t
я картинку сохраняю в отдельный альбом
ed.t
она еще пригодится юзеру потом
Никита
с base64 проще, но вероятно будет не очень быстро
ed.t
а что насчет депрекейтнутого assetslibrary? react-image-picker его юзает или это еще не скоро депрекейтнут?
ed.t
я попытался юзать PHPhotoLibrary но там нужна какая-то магия чтобы получить нормальный uri для картинки чтобы потом это отобразить в реакт-нейтив (так и не смог пока что)
Aleksandr
Всем привет! Подскажите, кто-нибудь делал поддержку bbcode?
Nikita
Всем привет! Подскажите пожалуйста вот по какому вопросу: Делаю offline прилагу. Ввиду требований необзодимо работать с sql запросами. Мой выбор пал на react-native-sqlite-storage. Без проблем все настроил, подключил и решил, что напишу модуль, который, будет работать с SQL запросами и возвращать мне результат (не важно какого запроса). Написал вотчер саги (юзаю redux-saga)для определенных типов экшенов для всех типов запросов. Получись что-то вроде https://paste.ubuntu.com/p/NNCjTxzdRB/ Т.е я в саге достаю инстанс базы и делаю const data = yield call(QueryService, { db, query}) и не получаю вообще ничего... Более того, .then невозможен т,к мне executeSql возвращает undefined Если делать через callback https://paste.ubuntu.com/p/SKbQzDFNbP/ То console.log('results', results), безусловно, выведет данные, вот только обратно в сагу я их не прокину... Если кто-нибудь работал с react-native-sqlite-storage подскажите пожалуйста, как вы решали проблемы или посоветуйте альтернативу для работы с SQLite
Привет, посмотри в сторону realm-js https://realm.io/docs/javascript/latest/ Там асинхронность идет уже из коробки (что касается .then), есть механизм миграций и в целом, имхо, как-то получше sqlite-storage под RN сделано.
Anton
Привет, посмотри в сторону realm-js https://realm.io/docs/javascript/latest/ Там асинхронность идет уже из коробки (что касается .then), есть механизм миграций и в целом, имхо, как-то получше sqlite-storage под RN сделано.
очень интересно! спасибо! Ту проблему я решил - простейшая задача была переписать на прромисы 🙂 Получилось сделать единую точку входа. Гляну солюшен, который ты скинул
Nikita
Ок, отлично!🙂
Gena
Привет, посмотри в сторону realm-js https://realm.io/docs/javascript/latest/ Там асинхронность идет уже из коробки (что касается .then), есть механизм миграций и в целом, имхо, как-то получше sqlite-storage под RN сделано.
А все знают, про её лицензию (я в прошлый раз не вспомнил, что меня смущает, но сейчас поглядел): https://github.com/realm/realm-java/blob/master/LICENSE#L186-L205
Nikita
Вроде под realm-js обычная Apache с уточнением для REALM COMPONENTS что нельзя модифицировать сами исходники realm-cocoa и realm-java, а в целом это royalty-free license to use the unmodified Licensed Software only for the purposes of integrating Licensed Software as backend for mobile application and deploying commercial production versions of such integrated applications
Nikita
т.е. пользовать и включать в состав приложения вроде бесплатно можно, а менять исходники уже нельзя
Gena
Чтоб не обращаться в их платный саппорт, а самим выяснить почему что-то не работает.
Nikita
врядли в реалм так глубоко понадобиться погружаться) думаю это скорее чтобы не нарушать целостность интеграции с из платным облаком и чтобы конкурентов не создавать
Gena
ну я написал, что меня смущает и почему я не хочу такого vendor lock'а иметь в проектах. А так... "Каждый выбирает для себя..." )