Владимир
о, так потихоньку и в нормальный продукт превратится%)
Vit
чет сомневаюсь)
Vit
вот за этими следить надо) https://github.com/callstackincubator/rebolt-navigation
Arsenii
Привет! Кто-то использует Яндекс карты в приложении? я нашел https://github.com/doomsower/react-native-yandexmapkit но с ним пока не получается запустить, и вижу что там версия 2 используется, а сейчас уже 3 в документации у яндекса
Ivan
они их забросили
Demuz
Demuz
Demuz
Tinder не на реакте часом? 😂
Demuz
Где image при первом рендере? 😁
Aynur
это баг на андроиде при circle image
Aynur
ну по опыту :D
Alexander
Почему this.props.navigation.navigate бывает отрабатывает не сразу, а с задержкой?
Aynur
а версия последняя?
Aynur
2.18.0 сейчас крайняя
Aynur
вроде это фиксили всё
Arsenii
:( варинт только для 3 делать обертку ?
Ivan
а чем гугл/мапбокс не нравится?
Arsenii
мне нравится, но хотят яндекс
Alexander
2.18.0 сейчас крайняя
Спасибо. Проблема решилась
Anonymous
Привет всем! Кто-то делал анимацию разворачивания картинки? Пробовали использовать react-native-lightbox, но работает криво.
Berik
что с ним то не так
Anonymous
а чем плох лайтбокс?
Криво сворачивается из-за изменения размеров
Berik
а естть такое, а просто заанимировать впрямую пробовали?
Anonymous
Нам нужно ещё закрытие по свайпу и решили пока не писать костыль, а поискать решение
Aynur
<Modal isVisible={true} onSwipe={() => { goBack(); }} onBackButtonPress={() => goBack()} swipeDirection={swipeDirection} style={{ margin: 0 }}> <PhotoView source={{ uri: url }} minimumZoomScale={1} maximumZoomScale={3} onScale={e => { console.log(e.nativeEvent.scale); this.setState({ zoom: e.nativeEvent.scale }) }} onLoad={() => console.log("Image loaded!")} style={{ width: win.width, height: win.height }} /> </Modal> Использовал в связке с react-native-photo-view - всё хорошо работало)
Aynur
if (this.state.zoom <= 1.1) { swipeDirection = 'down' } небольшой костыль на будущее, если не хотите, чтобы реагировало при зуме и перемещении по картинке пальцем
Chu
Всем доброго дня! По экспо вопрос. А можно как-то в коде узнать, что сейчас идёт запуск именно через экспо-клиент, а не через выложенное приложение?
Chu
Expo.Constants.appOwnership это оно?
Anonymous
Dmitry
Допустим у меня есть экран у которого в componentDidMount дергает запрос через axios. Пушим этот экран и, не дожидаясь ответа, пОпим. Вопрос, убьется ли запрос или продолжит висеть?
Ivan
Чтоб он убился - его надо отменить
Dmitry
Чтоб он убился - его надо отменить
Тогда получается, что нужно следить за всеми запросами на экранах....
Ivan
У нас это дело в редаксе происходит, в стейтах статусы загрузки, ошибки и остальные данные
Vit
@gblack9 у тебя ругани на циклические импорты много было после переезда на 0.57?) "Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle."
Steve
есть тут психопаты что воткнули litho/AsyncDisplayKit в реакт нейтив? Или может быть кто-то делал кастомный нативный лейаут?
Gena
Допустим у меня есть экран у которого в componentDidMount дергает запрос через axios. Пушим этот экран и, не дожидаясь ответа, пОпим. Вопрос, убьется ли запрос или продолжит висеть?
Будет висеть... радости добавляет ещё и то, что отменить запрос практически невозможно... (вот такое в mdn: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#Aborting_a_fetch) И хотя это умеет XMLHttpRequest (не знаю может ли его эмуляция в RN), обычно он завернут в API на промисах, которые в стандартном виде тоже отменить нельзя ))) Мы в итоге когда это важно игнорируем ответ (упрощенная схема): function doRequest() { let cancelled = false somethingThatDoRequest().then((res) => { if (cancelled) return Promise.resolve() }).then((...) => { if (cancelled) return Promise.resolve() // и везде (альтернатива рвать цепочку через throw new Error() ... }) return () => { cancelled = true } }
Gena
Но в RN 0.57.3 они перестали вызывать YellowBox...
Vit
не, вот 57.3 всё на месте
Vit
сентри да и фетч из рн
Gena
хм... странно, а у меня нет... только в консоли их видно
Vit
а ну да
Vit
в консоли
Gena
А, да... есть fetch ))) node_modules/react-native/Libraries/Network/fetch.js -> node_modules/react-native/Libraries/vendor/core/whatwg-fetch.js -> node_modules/react-native/Libraries/Network/fetch.js
Gena
axios умует в cancel на уровне XMLHttpRequest
О! Спасибо, буду иметь ввиду, если где-то с HTTP API придется работать!
Stas
то, что у вас, скорее response ignoring, а не отмета request-а
Stas
а точно, сорьки)
Gena
У нас это вообще в других конекстах возникает на самом деле, и т.к. апи через WebSockets, то рвать соединение нам не надо
Stas
про аксиос: https://github.com/axios/axios/blob/master/lib/adapters/xhr.js#L160 еще rxjs ajax сам абордит реквест при отписке от observable (что типично для reactivex): https://github.com/Reactive-Extensions/RxJS-DOM/blob/master/src/ajax/ajax.js#L177
Stas
кажется в ciclejs HTTP driver тоже так делает
Vit
про аксиос: https://github.com/axios/axios/blob/master/lib/adapters/xhr.js#L160 еще rxjs ajax сам абордит реквест при отписке от observable (что типично для reactivex): https://github.com/Reactive-Extensions/RxJS-DOM/blob/master/src/ajax/ajax.js#L177
а вот эпичный эпик который будет долбиться в апи каждые N секунд пока его не удовлетворят)) https://gist.github.com/mordaha/2c5776f0c8ccd59ebd7c8c9e74c500b5
Stas
они либо должны пулять экшены: "о, я активный", "блин, я ухожу", либо middleware должна иметь доступ к состянию навигации
Stas
потому-что сложность управления этим возрастает, особенно если запросов много и они один за другим идут. в этом случае rxjs так и просится
Stas
а вот эпичный эпик который будет долбиться в апи каждые N секунд пока его не удовлетворят)) https://gist.github.com/mordaha/2c5776f0c8ccd59ebd7c8c9e74c500b5
можно .takeUntil(action$.ofType('FETCH_EPIC')) поменять на switchMap вместо mergeMap. Вот в этом примере, когда происходит CANCEL_EPIC, запрос отменяется. CANCEL_EPIC может кидать сам экран, а еще этот эпик может подписываться на навигацию, и сам решать, но это дело вкуса.
Vit
ну я скорее к тому как это легко и элегантно на рхжс делается) для эксперимента можно попробовать тоже самое на промизах в санке или на сагах запилить чтобы понять какой гемор)
Vit
угу)
Stas
еще nightmare для отмены запросов на промисах- отмена запроса одного экрана из нескольких источников. Тогда нужно пробрасывать cancel token куда-то выше экрана, где запрос был сделан.
Andrew Kiselev
Если зависимость уже была добавлена в проект через pods, например, pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen’, тогда ее не надо линковать через xcodeproj и Build Phases? Также и обратное?
Gena
Если зависимость уже была добавлена в проект через pods, например, pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen’, тогда ее не надо линковать через xcodeproj и Build Phases? Также и обратное?
Если я правильно понял вопрос то да, более того двойной линкинг чреват core dump'ами. Если зависимость была установлена через cocoapods, то она слинкована через проект Pods (это такой гейтвейный проект через который cocoapods линкуют все зависимости) соответственно прямых упоминаний этой зависимости в основном проекте не должно быть.
Dmitry
На самом деле, я бы может и не задался этим вопросом, если бы не интересный баг
Dmitry
В процессе пользования приложния запросы начинаются просто вешаться на отправке, и тут спасает только переустановка приложения (это на iOS). Я начал искать дыры, но ошибка возникает не так часто и отловить ее сложно по косвенным признакам..
Dmitry
Пока вчера я не столкнулся с точно такой же проблемой в приложении ВК, в диалогах. Помогла только переустановка приложения. А ведь диалоги у них на лонгпуллинге, как и наше приложение..
Petr E
а кто сталкивался с проблемами AsyncStorage? Я вот столкнулся на андройде. AsyncStorage создает таску, но не выполняет ее. ни then ни catch не срабаывает. Как быть?
Gena
а кто сталкивался с проблемами AsyncStorage? Я вот столкнулся на андройде. AsyncStorage создает таску, но не выполняет ее. ни then ни catch не срабаывает. Как быть?
Я перестал использовать AsyncStorage больше года назад, после странных исчезновений данных (ios). Почитал его исходный код и желание пользоваться отпало полностью. Не знаю как он сейчас. Все проекты сейчас используют react-native-fs для хранения данных на диске, этот модуль тоже ужасно написан, но там хотя бы простые операции являются простыми под капотом и с ним не было замечено проблем пока.
Ivan
а по быстродействию как fs?
Ivan
и вроде бы в андроидах есть какая-то очистка кеша приложения - оно затирает эти файлы?
Gena
а по быстродействию как fs?
Там есть неоптимальный кусок кода (насколько я помню) - данные в натив гонятся как base64, т.е. есть дополнительное кодирование/декодирование и копирование. Но у нас не было проблем с его быстродействием. Более того, у него вроде были какие-то интерфейсы для чтения не всего файла, а отдельной области. В любом случае, это не БД, это просто интерфейс к чтению/записи в файл, поэтому если нужны какие-то оптимизации (типа индексов и разделения данных по нескольким файлам) то их надо поверх самому писать.
Gena
и вроде бы в андроидах есть какая-то очистка кеша приложения - оно затирает эти файлы?
Это зависит от папки, где лежит файл (и иногда от атрибутов файла, как флажок бэкапа в iCloud на ios), всем этим react-native-fs может управлять.
Gena
В том смысле, что это ваша задача - путь к файлу указывать и определять где он лежит, а не абстрактного интерфейса к файловой системе. Константы со стандартными путями он экспортит естественно: https://github.com/itinance/react-native-fs#constants