@reactnative_ru

Страница 268 из 878
Enjoy the
09.08.2017
22:48:13
{kek ? true : ''}

Google
Anton
09.08.2017
22:50:23
пропсы

Alexsandr
09.08.2017
22:50:56
ну с пропсами я не пробывал

Anton
09.08.2017
22:51:27
просто хотел такую конструкцию сократить {this.lolkek ? <Text active></Text> : <Text active></Text>}

Alexsandr
09.08.2017
22:51:37
ты можешь вот так сделать <Text props={{this.lolkek && 'active'}} />

Andrew
09.08.2017
22:51:47
{kek ? true : ''}
const money = 101; const message = money > 100 ? 'продать товар' : 'недостаточно денег'; document.write(message);

Alexsandr
09.08.2017
22:52:02
но честно я не уверен

Andrew
09.08.2017
22:52:05
во второй строчке тернарный оператор

Alexsandr
09.08.2017
22:52:55
но не проще тогда уже сделать так

<Text active>{ this.lolkek ? text : another text }</Text>

а то иначе уже тебя разные текста рендрится

Stas
10.08.2017
08:19:24
как вы решаете проблему пересоздания активити в android при работе с внешними приложениями вроде камеры или выбора файла?

Google
Stas
10.08.2017
08:43:10
Никак
просто показываете главный экран? )

сори, у нас активити ушла, вот вам новая

думаю, может кастыль написать... в application или bundle стейт redux-а сохранять

Albert
10.08.2017
08:46:00
Привет. Подскажите можно ли как то на нажатие в таббаре открывать action sheet? использую react-navigation?

Albert
10.08.2017
08:59:25
можно )
Отлично, а каким образом на него повесить onPress? конкретно на 1 таб.

Alex
10.08.2017
08:59:33
По простому ты можешь вместо вьюхи для экрана подложить touchable, либо пишешь компонент для табов и контролируешь табы сам

да на onPress вызываешь то что тебе нужно

Albert
10.08.2017
09:00:41
Оуу, я понял) спасибо

Add: { screen: <TouchableOpacity> <Text>Press</Text> </TouchableOpacity>, navigationOptions: { tabBarLabel: ' ', tabBarIcon: <Icon size={70} name='add-circle' color='#FFFFFF' style={{ shadowColor: '#000000', shadowOffset: { width: 0, height: 3 }, shadowRadius: 3, shadowOpacity: 0.5 }} /> } },Сделал так, но он ругает, что в сцене должен быть реакт компонент

Alex
10.08.2017
09:23:07
заимпорть сверху React

Egor
10.08.2017
09:23:46
Что-то не могу понять, неужели нет простого способа поставить кодом фокус в TextInput, например, после заполнения первого TextInput в форме?

Решения какие-то чересчур сложные

Alex
10.08.2017
09:24:38
ну взять реф и тыкнуть фокус ?

Egor
10.08.2017
09:24:49
нет метода focus говорит

Alex
10.08.2017
09:25:05
хм

Egor
10.08.2017
09:25:12
на SO какие-то хаки с this._component.focus()

Egor
10.08.2017
09:26:47
https://stackoverflow.com/a/40837333/7931177 попробую это

Google
Mikhail
10.08.2017
09:27:59
Всем привет, ребят я понимаю redux это библотека не про работу с сетью а что-то немного другое? Просто с чистым react не работал, а задача стоит разобраться с react native, что посоветуете для изучения по работе с сетями?

Alex
10.08.2017
09:29:53
https://stackoverflow.com/a/40837333/7931177 попробую это
вообще странно, у меня есть старый проект на rn 0.30 там как раз работает this.someRef.focus()

Egor
10.08.2017
09:30:09
типа выпилили это, как я понял

у меня 0.47

Alex
10.08.2017
09:30:20
печаль

Mikhail
10.08.2017
09:30:20
Или стандартные решения что описываются в https://facebook.github.io/react-native/docs/network.html тоже подходят?

Egor
10.08.2017
09:31:02
fetch и что еще нужно =)))

про какой-то axios еще говорят...

Albert
10.08.2017
09:31:17
только screen: () => <TouchableOpacity></TouchableOpacity>
Сработало, спасибо. Но он в любом случае открывает новое окно, можно ли это как то задизейблить?

Алексей
10.08.2017
09:31:26
типа выпилили это, как я понял
эх, жаль что shergin не часто тут появляется, он бы рассказал что там переделал)

Alex
10.08.2017
09:31:50
@albert https://gist.github.com/alex-nask/64d5e26fec3cd65b88a953cd2d10c1e6 что то типа такого

Roma
10.08.2017
09:45:47
Ребят, посоветуйте что-нибудь годное для маскИрованного ввода

Egor
10.08.2017
10:03:49
в общем в 46 работает переход от инпута к инпуту через TextInputState.focusTextInput(findNodeHandle(node)) где node это ref на следующий инпут

Egor
10.08.2017
10:05:50
поправочка: 0.46, но думаю что будет и в 47 нормально

Danil
10.08.2017
10:23:24
Как правильно в RN сетапить анимацию с текущего стейта если другая анимация еще не законченна? Вот snack: https://snack.expo.io/S1uRQhYDZ Если тапать на прямоугольник с задержкой 1 секунду, то число красиво баунсит. А если начать быстро тапать, то начинает прыгать.

Danil
10.08.2017
10:30:58
Ну у меня кейс когда анимация может начаться и мне надо просто не заканчивая старую начать новую

Google
Danil
10.08.2017
10:40:18
Animated.spring
Он это сам хендлит?

Алексей
10.08.2017
10:40:22
да

Roma
10.08.2017
10:53:09
Egor
10.08.2017
11:26:00
Телефон, хотя бы
Телефон, хотя бы

https://www.npmjs.com/package/react-native-masked-text

Danil
10.08.2017
11:36:41
да
Спасибо

Vadim
10.08.2017
11:54:20
У react-native-masked-text под капотом https://github.com/vanilla-masker/vanilla-masker Если хочешь кастомную логику или лень переделывать свой инпут, то в самый раз

Albert
10.08.2017
12:04:49
Execution failed for task ':realm:compileReleaseJavaWithJavac'. никто не сталкивался с такой проблемой на андроиде? на ios все норм

Egor
10.08.2017
12:34:10
я может быть, но не помню =) постоянно всякое дерьмо с реалм

например Jest делает временные файлы для realm в папке проекта а пакаджер пытается их упаковать в bundle и виснет

Albert
10.08.2017
12:49:52
ну я это заметил на 0.46+ версии, на 0.45 все ок(

Egor
10.08.2017
12:51:34
у меня сейчас 0.46 - собрал только что :realm:compileReleaseJavaWithJavac UP-TO-DATE всё норм

не знаю даже

Nikita
10.08.2017
14:22:22
Ребята, подскажите плиз, начал изучать redux-saga, пытаюсь понять как реализовать следующий кейс, используя преимущества этой либы: в action должно выполнится 2 запроса, если первый запрос вернет fail, то следующий выполняться не должен, если вернет success, то нужно взять данные от response и выполнить запрос 2 и уже задиспатчить в стор. (Как тут избежать исользования if'ов в worker)

// 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
10.08.2017
14:24:12
может try / catch ?

Nikita
10.08.2017
14:25:00
ну это по сути тот же callback hell, нет?

Egor
10.08.2017
14:25:19
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})) } }

ну наприме у меня вот так

Google
Egor
10.08.2017
14:25:57
если yield call(api.sendPassCode, passCode) валится то отлавливается в catch

вроде более-менее понятно и линейно в целом

адок можно и на промисах устроить

Andrew
10.08.2017
14:26:58
уже лучше. А еще проще писать как: 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
10.08.2017
14:27:23
тут канал?

Andrew
10.08.2017
14:28:00
да

Egor
10.08.2017
14:28:02
где-то должен быть channel =)))

Andrew
10.08.2017
14:28:39
канал для саги?

Nikita
10.08.2017
14:32:05
Сейчас переформулимрую вопрос)

Andrey
10.08.2017
14:32:59
Да нормас все, напиши еще одну сагу которая будет слушать результат первой

Nikita
10.08.2017
14:34:51
Да нормас все, напиши еще одну сагу которая будет слушать результат первой
Дело в том что 'первая' может запускаться через экшн отдельно, тоесть мне не всегда нужно ловить ее результат

Alex
10.08.2017
16:38:06
уже лучше. А еще проще писать как: 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
10.08.2017
19:02:28
А вот этот call api там что ? У меня обычно промис и его только через try-catch выходит поймать...
я try catch юзаю только когда надо хендлить отсутствие коннекта

я юзаю библиотечку своего знакомого - repoint, обертка над изоморфик фетчем

Yuriy
10.08.2017
19:29:21
оп, посоветуйте navigation для андройда http://airbnb.io/native-navigation/ , https://github.com/wix/react-native-navigation, или что-то посоветуйте, что бы и redux дружило хорошо

Yuriy
10.08.2017
19:32:51
а кто что юзает?, @alexnask твой личный опыт какой? или не заморачиваться с нативным, хотя имел опыт с NavigatorIOS

Страница 268 из 878