Mikhail
Всем привет, ребят я понимаю redux это библотека не про работу с сетью а что-то немного другое? Просто с чистым react не работал, а задача стоит разобраться с react native, что посоветуете для изучения по работе с сетями?
Alex
https://stackoverflow.com/a/40837333/7931177 попробую это
вообще странно, у меня есть старый проект на rn 0.30 там как раз работает this.someRef.focus()
Egor
типа выпилили это, как я понял
Egor
у меня 0.47
Alex
печаль
Mikhail
Или стандартные решения что описываются в https://facebook.github.io/react-native/docs/network.html тоже подходят?
Egor
fetch и что еще нужно =)))
Egor
про какой-то axios еще говорят...
Albert
только screen: () => <TouchableOpacity></TouchableOpacity>
Сработало, спасибо. Но он в любом случае открывает новое окно, можно ли это как то задизейблить?
Aleksei
типа выпилили это, как я понял
эх, жаль что shergin не часто тут появляется, он бы рассказал что там переделал)
Alex
@albert https://gist.github.com/alex-nask/64d5e26fec3cd65b88a953cd2d10c1e6 что то типа такого
Roma
Ребят, посоветуйте что-нибудь годное для маскИрованного ввода
Egor
в общем в 46 работает переход от инпута к инпуту через TextInputState.focusTextInput(findNodeHandle(node)) где node это ref на следующий инпут
Egor
поправочка: 0.46, но думаю что будет и в 47 нормально
Danil
Как правильно в RN сетапить анимацию с текущего стейта если другая анимация еще не законченна? Вот snack: https://snack.expo.io/S1uRQhYDZ Если тапать на прямоугольник с задержкой 1 секунду, то число красиво баунсит. А если начать быстро тапать, то начинает прыгать.
Danil
Ну у меня кейс когда анимация может начаться и мне надо просто не заканчивая старую начать новую
Danil
Animated.spring
Он это сам хендлит?
Aleksei
да
Egor
Телефон, хотя бы
Телефон, хотя бы
Egor
https://www.npmjs.com/package/react-native-masked-text
Danil
да
Спасибо
Vadim
У react-native-masked-text под капотом https://github.com/vanilla-masker/vanilla-masker Если хочешь кастомную логику или лень переделывать свой инпут, то в самый раз
Albert
Execution failed for task ':realm:compileReleaseJavaWithJavac'. никто не сталкивался с такой проблемой на андроиде? на ios все норм
Egor
я может быть, но не помню =) постоянно всякое дерьмо с реалм
Egor
например Jest делает временные файлы для realm в папке проекта а пакаджер пытается их упаковать в bundle и виснет
Albert
ну я это заметил на 0.46+ версии, на 0.45 все ок(
Egor
у меня сейчас 0.46 - собрал только что :realm:compileReleaseJavaWithJavac UP-TO-DATE всё норм
Egor
не знаю даже
Nikita
Ребята, подскажите плиз, начал изучать redux-saga, пытаюсь понять как реализовать следующий кейс, используя преимущества этой либы: в action должно выполнится 2 запроса, если первый запрос вернет fail, то следующий выполняться не должен, если вернет success, то нужно взять данные от response и выполнить запрос 2 и уже задиспатчить в стор. (Как тут избежать исользования if'ов в worker)
Nikita
// Watcher function* watchLogin() { yield takeLatest(actions.LOGIN.REQUEST, login); } // Worker function* login({ facial_image, password, device_imei }) { // console.log('inaction', action); const errorCodesValidate = [3000, 3001, 6000]; const result = yield call(fetchValidate, { facial_image }, errorCodesValidate); if (result.facial_image_id) { const facial_image_id = result.facial_image_id; yield call(fetchLogin, { facial_image_id, password, device_imei }, errorCodesValidate); } else { // Failure } }
Egor
может try / catch ?
Nikita
ну это по сути тот же callback hell, нет?
Egor
function* submitPassCode<T>(action: Action): Iterable<T> { try { const passCode: PassCode = action.payload const userID: any = yield call(api.sendPassCode, passCode) yield put(submitPassCodeDone()) yield put(setActiveUserID(userID)) } catch (error) { yield put(submitPassCodeFailure({error})) } }
Egor
ну наприме у меня вот так
Egor
если yield call(api.sendPassCode, passCode) валится то отлавливается в catch
Egor
вроде более-менее понятно и линейно в целом
Egor
адок можно и на промисах устроить
Andrew Kiselev
уже лучше. А еще проще писать как: function* watchLoadComments() { while (true) { const {payload} = yield take(CommentsActionTypes.LOAD_COMMENTS_REQUEST); try { const {data} = yield call( axios.get, /api/comments?last_days=${payload.lastDaysLimit} ); yield put(CommentsActions.loadComments.success(data)); } catch (error) { yield put(CommentsActions.loadComments.failure(error)); } } }
Egor
тут канал?
Andrew Kiselev
да
Egor
где-то должен быть channel =)))
Andrew Kiselev
канал для саги?
Nikita
Сейчас переформулимрую вопрос)
Andrey
Да нормас все, напиши еще одну сагу которая будет слушать результат первой
Nikita
Да нормас все, напиши еще одну сагу которая будет слушать результат первой
Дело в том что 'первая' может запускаться через экшн отдельно, тоесть мне не всегда нужно ловить ее результат
Alex
уже лучше. А еще проще писать как: function* watchLoadComments() { while (true) { const {payload} = yield take(CommentsActionTypes.LOAD_COMMENTS_REQUEST); try { const {data} = yield call( axios.get, /api/comments?last_days=${payload.lastDaysLimit} ); yield put(CommentsActions.loadComments.success(data)); } catch (error) { yield put(CommentsActions.loadComments.failure(error)); } } }
я пишу саги так function* root() { yield all([ someSagas() ]) } // someSagas function* someSaga(action) { const { something } = action.payload const { response, error } = yield call(API call with 'something in body') if (error) { yield put({ type: types.SOME_ACTION_FAILURE }) } else { yield put({ type: types.SOME_ACTION_SUCCESS, payload: { something: response } }) } } export function* someSagas() { yield [ takeLatest/takeEvery(types.SOME_ACTION_REQUEST, someSaga) ] }
Alex
А вот этот call api там что ? У меня обычно промис и его только через try-catch выходит поймать...
я try catch юзаю только когда надо хендлить отсутствие коннекта
Alex
я юзаю библиотечку своего знакомого - repoint, обертка над изоморфик фетчем
Yuriy
оп, посоветуйте navigation для андройда http://airbnb.io/native-navigation/ , https://github.com/wix/react-native-navigation, или что-то посоветуйте, что бы и redux дружило хорошо
Yuriy
а кто что юзает?, @alexnask твой личный опыт какой? или не заморачиваться с нативным, хотя имел опыт с NavigatorIOS
Alex
а кто что юзает?, @alexnask твой личный опыт какой? или не заморачиваться с нативным, хотя имел опыт с NavigatorIOS
я react-navigation, потому что до него работал с ex-navigation, который типа перерос в react-navigation. Он конечно не фонтан, но коммьюнити живое и куча разных проблем уже решено с ним
Yuriy
@alexnask , а с redux ты его сам дружил, или использовал какую-то библиотеку?
Alex
у них в доках есть пример
Rostyslav
подскажите пикер фото из галере
Rostyslav
что-то подобное как в expo
Rostyslav
было бы круто
Alex
не знаю какой в expo )
Rostyslav
Rostyslav
react-native-image-picker
Завёлся с 1 раза)
Rostyslav
Что в моем случае удевительно)))
Anton
Всем привет. Стал ошибку постоянно ловить вылет приложения на android - APPNAME be stopping. Причем это прям при запуске приложения появляется, так что даже не подебажить. У кого-то было такое?
Aleksandr
Было, было из за плагина react native blur, было из за сломанного манифеста и тп
Yuriy
товарищи, спасибо)
Aleksei
react-native-navigation кстати тоже не советую)
Vit
Виксовскую?
Vit
А че там? Так и не допилили до ума? Я в прошлом году смотрел, когда андроида еще толком не поддерживало
Aleksei
А че там? Так и не допилили до ума? Я в прошлом году смотрел, когда андроида еще толком не поддерживало
мне не нравится что при любом баге или фиче которая тебе нужна но ее нет (а в нативном случае это гораздо чаще) приходится в нативку лезть