@reactnative_ru

Страница 797 из 878
Demuz
28.08.2018
18:32:36


Play
28.08.2018
18:32:48
ну я так обычно не пишу )
https://habr.com/post/144611/ Don’t repeat yourself, DRY (рус. не повторяйся) — это принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования. Принцип DRY формулируется как: «Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы»

Google
Артемий
28.08.2018
19:47:42
Ищу человека из Беларуссии может есть тут кто такой? Нужна платная консультация

✡️Хаски
28.08.2018
19:53:12
Заходи

Там все белорусские

Dmitry
28.08.2018
20:08:08
Ну у кого под рукой нет практики написания модулей для npm ?

Gena
28.08.2018
20:44:15
Ну у кого под рукой нет практики написания модулей для npm ?
А в чем проблема? Там полная анархия, поэтому для эксперимента рекомендовал бы сперва попрактиковаться с паблишингом в неймспейс, модуль будет называться в этом случае как-то @username/my-module-name (если имя пользователя в npm `username`). Всё остальное в доках на npmjs.com

Dmitry
29.08.2018
05:19:58
Я думал есть какие-то нормативы, как структуру оформлять, как код, а пока по гиту лазил понял, что кто, как хочет, так и пишет

Gena
29.08.2018
05:25:37
Я думал есть какие-то нормативы, как структуру оформлять, как код, а пока по гиту лазил понял, что кто, как хочет, так и пишет
Именно... я обычно по оформлению смотрю на модули, которые мне нравится как устроенны и делаю по аналогии... Из автоматики, в последнее время пытаюсь переводиться на standard-version (он автоматом определяет номер версии и CHANGELOG генерит, чего мне у других, даже популярных, модулей часто не хватает), но он требует специального оформления коммитов, что может быть трудно...

Ruslan
29.08.2018
05:34:34
Привет всем, такая проблема: Через BackHandler вешаю на физ кнопку андроида “Назад” переход на конкретный скрин, все вроде работает и хорошо - в didmount вешаю, а в willunmount удаляю слушателя, да только проблема в том, что после срабатывания данного действия, роутер начинает везде такое вытворять, то есть по всем компонентам - выбрасывать на один конкретный скрин, и тут начинается багло

Vetka
29.08.2018
06:08:03
Привет всем! Кто-нибудь пользовался https://github.com/sunnylqm/react-native-storage?

Google
Dmitry
29.08.2018
06:10:29
Помогите пожалуйста полечить, не знаю куда копать, библиотека react-native-router-flux
Не пользовался им, но походу у тебя все экраны обрабатывают один и тот же эвент, хотя, по идее, на каждом должен быть свой

Ruslan
29.08.2018
06:12:28
Не пользовался им, но походу у тебя все экраны обрабатывают один и тот же эвент, хотя, по идее, на каждом должен быть свой
Я вот тоже думал про это, но при маунте компонента вешаю слушателя, а потом при анмаунте удаляю, по идее должно работать, а не работает потом

Ruslan
29.08.2018
06:21:19
Я бы логал маунт и анмаунт для начала
С ними в порядке, они работают, в том и дело

Nick
29.08.2018
06:30:40
Ну не исключено, что из-за подобного поведения так и было сделано)

Никита
29.08.2018
06:31:19
А код можно? Быстрее будет

Ruslan
29.08.2018
06:32:57
А код можно? Быстрее будет
backAndroid() { this.props.showHomeScreen(); return true; } componentDidMount() { BackHandler.addEventListener('hardwareBackPress', () => this.backAndroid()); } componentWillUnmount() { BackHandler.removeEventListener('hardwareBackPress', () => this.backAndroid()); }

И после того как на этом скрине включается этот код весь роутер перестает нормально работать

Никита
29.08.2018
06:34:19
Вы новую функцию пытаетесь удалить

Nick
29.08.2018
06:34:20
Не стрелочную передавайте

Ruslan
29.08.2018
06:36:04
Не стрелочную передавайте
Вы имеете в виду без анонимной функции в слушателя?

сделал так, приложение валится

в оф доках тоже со стрелочной

Никита
29.08.2018
06:48:09
Саму функцию сделайте стрелочной

Alexander
29.08.2018
06:48:34
Как сделать linear-gradient?

Никита
29.08.2018
06:48:50
Alexander
29.08.2018
06:49:10
Svg например
Не подойдет

Google
Никита
29.08.2018
06:49:48
Ещё вроде есть react-native-linear-gradient

Alexander
29.08.2018
06:50:08
Да, я его видел. Думал может еще что есть ?

Ruslan
29.08.2018
06:50:26
Никита
29.08.2018
06:56:16
backAndroid = () => { this.props.showHomeScreen(); return true; } componentDidMount() { BackHandler.addEventListener('hardwareBackPress', this.backAndroid); } componentWillUnmount() { BackHandler.removeEventListener('hardwareBackPress', this.backAndroid); } должно работать

✡️Хаски
29.08.2018
07:17:06
Посоветуйте какой плеер для воспроизведения видео с YouTube в RN?

✡️Хаски
29.08.2018
07:33:14
WebView
как открыть видео в fullScreen ?

Khorark
29.08.2018
07:35:26
✡️Хаски
29.08.2018
07:36:36
Khorark
29.08.2018
07:36:54
1ое
https://github.com/teamairship/react-native-android-fullscreen-webview-video#readme

✡️Хаски
29.08.2018
07:39:33
https://github.com/teamairship/react-native-android-fullscreen-webview-video#readme
еще как вы решили проблему переходов внутри webView , если кликнуть по логитипу youtube

Khorark
29.08.2018
07:42:47
еще как вы решили проблему переходов внутри webView , если кликнуть по логитипу youtube
Не решал такую проблему. Думаю можно поиграться с injectedJavaScript

Yan
29.08.2018
08:52:22
Начал тут учить react native по вынужденным причинам, оказывается есть и vue native, который тоже работает с expo Может кто-то успел поработать с обоими инструментами и может сказать свое мнение? Просто слышу постоянно, что react говно, а vue весь такой классный, может тогда стоит сразу на vue native делать приложение? P.S. я бэкендщик, поэтому вопросы могут быть глупые)

Yan
29.08.2018
08:53:39
все, понял, спасибо)

Gena
29.08.2018
09:01:36
Начал тут учить react native по вынужденным причинам, оказывается есть и vue native, который тоже работает с expo Может кто-то успел поработать с обоими инструментами и может сказать свое мнение? Просто слышу постоянно, что react говно, а vue весь такой классный, может тогда стоит сразу на vue native делать приложение? P.S. я бэкендщик, поэтому вопросы могут быть глупые)
Сам React норм... не знаю, может у web-сообщества к нему и есть какие-то претензии, но у меня нет. Более того, похоже, это единственный открытый проект фейсбука, который действительно нормально менеджерят. Остальное странное, из того, что я уже видел: flowtype, yarn (имеет шанс тоже стать нормальным, но в этом будет виноват не fb, а npm Inc), buck, watchman, yoga, react-native... развивается непредсказуемо, содержит огромное кол-во багов, которые не фиксятся уже можно сказать годами, нет коммуникации с сообществом... jest в последнее время вроде прогрессирует ещё в лучшую сторону... Возвращаясь к React... в сравнении с vue - он прост и хорошо документирован!

Yan
29.08.2018
09:04:28
спс за фидбек, мне вообще нужен прототип на клиенте в моб приложении, но мнения по реакту реально расходятся)

Vladimir
29.08.2018
09:07:05
делайте на рн спокойно

Google
Yan
29.08.2018
09:16:35
??

Ksetrin
29.08.2018
09:18:06
если тебя сильно беспокоят мнение сообщества, можешь сделать на флаттере

Ruslan
29.08.2018
10:52:48
Данные попадают во flatlist, прямо в props renderItem, а сам список не отображается

Admin
ERROR: S client not available

Ruslan
29.08.2018
10:52:57
Как такое может быть?

Serj
29.08.2018
10:55:23
Такого не может быть)

Gena
29.08.2018
11:13:01
Как такое может быть?
Легко. Мой совет посмотреть на примаунченные элементы и их лэйаут через react-devtools или им подобные штуки...

Ruslan
29.08.2018
11:13:43
Легко. Мой совет посмотреть на примаунченные элементы и их лэйаут через react-devtools или им подобные штуки...
Решил проблему, там вообще по глупости получилось)Забыл главному флекс дать и вот результат)

Ruslan
29.08.2018
11:14:40
Ага, я поэтому про react-devtools и писал )
Тепреь буду знать, спасибо!)

✡️Хаски
29.08.2018
11:33:54
Webview on Android не работает injectedJavaScript Кто сталкивася с такой проблемой ? https://snack.expo.io/@retyui/webview_injectedjavascript_bag

Vetka
29.08.2018
12:14:46
Ребяяяяята, памагити ? формирую headers перед запросом, из AsyncStorage получаю токен, чтобы его засунуть в хедер и отправить с запросом, в самом первом запросе хедер не подцепляется, в последующих норм, попыталась в thunk сделать так const _getUserProfile = headers => ({ type: actionTypes.GET_USER_PROFILE, payload: { request: { url: API.userProfileUrl(), method: 'get', headers: headers, }, options: { onSuccess({dispatch, response}) { API.handleSuccess(response, dispatch, actionTypes.GET_USER_PROFILE_SUCCESS, actionTypes.GET_USER_PROFILE_FAIL) }, onError({dispatch, error}) { API.handleError(dispatch, actionTypes.GET_USER_PROFILE_FAIL, error) }, }, }, }) export const getUserProfile = () => { return (dispatch) => { const headers = API.getHeaders() if (headers) { console.log('=============> headers = ', headers) dispatch(_getUserProfile(headers)) } } } в логе хедеры нормально выводятся, потом redux-logger пишет GET_USER_PROFILE action, в нем рекваест заголовок содержит, проксирую через чарльза, токена в заголовке естественно нет. Как бороться с этой бедой?

Ivan
29.08.2018
12:20:45
export const getUserProfile = async () => { return async (dispatch) => { const headers = await API.getHeaders() // оно же асинхронное в прошлый раз было? if (headers) { console.log('=============> headers = ', headers) dispatch(_getUserProfile(headers)) } } }

Vetka
29.08.2018
12:24:24
export const getUserProfile = async () => { return async (dispatch) => { const headers = await API.getHeaders() // оно же асинхронное в прошлый раз было? if (headers) { console.log('=============> headers = ', headers) dispatch(_getUserProfile(headers)) } } }
const getToken = async () => { return await getItem('accessTokens') } export const getHeaders = () => { getToken().then(res => Object.assign(headers, {'X-Auth-Token': res.access_token})) return headers }

Ivan
29.08.2018
12:33:44
кто такой getItem?

Vetka
29.08.2018
12:34:48
асинхронная функция для получения токена из AsyncStorage

Ivan
29.08.2018
12:41:02
тебе нужно из getHeaders вернуть объект, дождавшись промиса

или просто верни промис, тогда, по идее в const headers = await API.getHeaders() дождется объекта но, возможно, я не прав

Gena
29.08.2018
12:52:31
Слушайте... вот это вот всё выглядит очень просто... я не помню контекст, поэтому вот универсальный развернутый код с комментариями... чем меньше у вас будет async/await тем лучше вы будете осознавать, что на самом деле происходит, где промис, где синхронный вызов... можно заставить это работать в развернутом виде, потом отрефакторить в любую удобную вам архитектуру... function makeApiRequest() { console.log('makeApiRequest start') AsyncStorage.getItem('accessToken') .then((token) => { // если токен уже есть, просто возвращаем if (token) return token // если ещё никогда не было, надо его получить, сохранить в AsyncStorage и вернуть промис отресолвленный в него console.log('makeApiRequest token empty, request new one') return requestNewApiTokenAndSaveForFutureUse() }) .then((token) => { console.log('makeApiRequest get token: ', token) return fetch('https://mydomain.api.ru/endpoint/', { // сюда можно вставить всё что нужно ещё по конфигурации запроса... headers: { 'X-Auth-Token': token }, }) }) .then((res) => { console.log('makeApiRequest got response from api: ', res) return res.json() // Декодим ответ... здесь можно вставить проверку ошибок и пр... }) .then((data) => { console.log('makeApiRequest got response from api data: ', data) // делаем что-то с данными, к примеру постим в redux ? store.dispatch(makeActionFromApiResponse(data)) }) .catch((e) => { console.log('makeApiRequest error: ', (e.toString ? e.toString() : e)) }) }

Play
29.08.2018
12:59:07
Google
Vetka
29.08.2018
13:00:27
Покажите строчку кода, где вы получате из AsyncStorage токен?
export const getItem = async () => { try { const item = await AsyncStorage.getItem('accessTokens') return JSON.parse(item) } catch(error) { console.log(error.message) } }

Play
29.08.2018
13:02:19
Зачем это? return JSON.parse(item)

Gena
29.08.2018
13:02:29
export const getItem = async () => { try { const item = await AsyncStorage.getItem('accessTokens') return JSON.parse(item) } catch(error) { console.log(error.message) } }
А во что отресолвится промис, возвращаемый ф-цией getItem, если внутри произойдет исключение... к примеру AsyncStorage.getItem вернет не json?

Извините, если что... это моя личная неприязнь к async/await стилю... оно было призвано сэкономить ровно один отступ, а вместо этого непропорционально увеличило ментальную нагрузку на чтение кода...

Alexsandr
29.08.2018
13:04:55
только в стринг может

Alexsandr
29.08.2018
13:05:53
всегда string отправляю
ну ты можешь туда объект положить, в stringify

а потом получить обратно объект когда тебе это надо

Play
29.08.2018
13:07:01
ну ты можешь туда объект положить, в stringify
в ее конкретном случае зачем?

Alexsandr
29.08.2018
13:07:21
в ее конкретном случае зачем?
это уже другой вопрос)

Play
29.08.2018
13:07:34

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