чей ты
Посоветуйте какой плеер для воспроизведения видео с YouTube в RN?
чей ты
WebView
как открыть видео в fullScreen ?
чей ты
Khorark
1ое
https://github.com/teamairship/react-native-android-fullscreen-webview-video#readme
чей ты
https://github.com/teamairship/react-native-android-fullscreen-webview-video#readme
еще как вы решили проблему переходов внутри webView , если кликнуть по логитипу youtube
Khorark
еще как вы решили проблему переходов внутри webView , если кликнуть по логитипу youtube
Не решал такую проблему. Думаю можно поиграться с injectedJavaScript
John
Начал тут учить react native по вынужденным причинам, оказывается есть и vue native, который тоже работает с expo Может кто-то успел поработать с обоими инструментами и может сказать свое мнение? Просто слышу постоянно, что react говно, а vue весь такой классный, может тогда стоит сразу на vue native делать приложение? P.S. я бэкендщик, поэтому вопросы могут быть глупые)
Dmitrii
это одно и тоже
John
все, понял, спасибо)
Gena
Начал тут учить 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 - он прост и хорошо документирован!
John
спс за фидбек, мне вообще нужен прототип на клиенте в моб приложении, но мнения по реакту реально расходятся)
Владимир
делайте на рн спокойно
John
👍🙂
Petr E
если тебя сильно беспокоят мнение сообщества, можешь сделать на флаттере
Ruslan
Данные попадают во flatlist, прямо в props renderItem, а сам список не отображается
Ruslan
Как такое может быть?
Serhii
Такого не может быть)
Gena
Как такое может быть?
Легко. Мой совет посмотреть на примаунченные элементы и их лэйаут через react-devtools или им подобные штуки...
Ruslan
Легко. Мой совет посмотреть на примаунченные элементы и их лэйаут через react-devtools или им подобные штуки...
Решил проблему, там вообще по глупости получилось)Забыл главному флекс дать и вот результат)
Ruslan
Ага, я поэтому про react-devtools и писал )
Тепреь буду знать, спасибо!)
чей ты
Webview on Android не работает injectedJavaScript Кто сталкивася с такой проблемой ? https://snack.expo.io/@retyui/webview_injectedjavascript_bag
Elizaveta
Ребяяяяята, памагити 😫 формирую 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
export const getUserProfile = async () => { return async (dispatch) => { const headers = await API.getHeaders() // оно же асинхронное в прошлый раз было? if (headers) { console.log('=============> headers = ', headers) dispatch(_getUserProfile(headers)) } } }
Elizaveta
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
кто такой getItem?
Elizaveta
асинхронная функция для получения токена из AsyncStorage
Ivan
тебе нужно из getHeaders вернуть объект, дождавшись промиса
Ivan
или просто верни промис, тогда, по идее в const headers = await API.getHeaders() дождется объекта но, возможно, я не прав
Gena
Слушайте... вот это вот всё выглядит очень просто... я не помню контекст, поэтому вот универсальный развернутый код с комментариями... чем меньше у вас будет 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)) }) }
Elizaveta
export const getItem = async () => { try { const item = await AsyncStorage.getItem('accessTokens') return JSON.parse(item) } catch(error) { console.log(error.message) } }
Gena
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?
Gena
Извините, если что... это моя личная неприязнь к async/await стилю... оно было призвано сэкономить ровно один отступ, а вместо этого непропорционально увеличило ментальную нагрузку на чтение кода...
Alexsandr
asyncstore
Alexsandr
только в стринг может
Alexsandr
ну ты можешь туда объект положить, в stringify
Alexsandr
а потом получить обратно объект когда тебе это надо
Alexsandr
это уже другой вопрос)
Elizaveta
потому что сохраняю туда объект
Elizaveta
спасибо, погляжу))
Elizaveta
там помимо access token еще время истечения и рефреш токен
Evgeniy
кто-нибудь загружал картинки на сервер используя axios? можно пример?
Evgeniy
у вас гугл сломался?
там рабочего ответа не нашел
Raven
такие вопросы решает первая строчка в гугле
Raven
http://lmgtfy.com/?q=axios+file+upload
Raven
первую строчку открой
Raven
на gist.github.com
Raven
и там есть пример
Raven
нормальный
Raven
рабочий пример
Raven
еще и ссылка на jsfiddle
Raven
в коменте
Evgeniy
мы в чате react-native, jsfiddle не актуален
Raven
и что? причем реакт нейтив к axios? обычная JS либа, работает везде
Evgeniy
ок
Raven
засунь файл в форм дата и сделай контент тайп мультипарт/форм-дата
Raven
все
Raven
а вообще лучше сначала разобратся что такое программирование и как оно работает. а потом писать уже на каких-либо фреймворках
Aleksei
ух какой чатик агрессивный стал
Raven
Алексей, ну согласись и это элементарный джуниоровский вопрос который решается первой ссылкой в гугле
Peter
там рабочего ответа не нашел
let params = new FormData(); params.append('image', { uri:uri, name: 'image.jpg', type: 'image/jpeg' });
Aleksei
нет, не соглашусь. У нас даже в правилах написано "новичков не гнобим, а помогаем", так что keep calm 🙂
Alexsandr
нет, не соглашусь. У нас даже в правилах написано "новичков не гнобим, а помогаем", так что keep calm 🙂
просто все очень умные стали, и стали забывать как сами вопросы задавали)
Raven
просто все очень умные стали, и стали забывать как сами вопросы задавали)
да ладно тебе, это элементарные вещи. мои стажеры такое знают
Alexsandr
и люди приходят сюда за помощью
Alexsandr
а не за критикой
Aleksei
ну новичкам конечно тоже неплохо бы знать как задавать вопросы, подетальнее там и все такое, но я все надеюсь что этому учит "тишина" в чате в ответ на вопрос 😄 просто нужно быть всем вежливее друг к другу
Raven
ну так перед тем как изучать фреймворки нужно освоит базовые вещи. это знаешь как начать строить дом и не понимать что ты делаешь и зачем
Alexsandr
он прям с react начал
Alexsandr
и щас вроде уже норм
Aleksei
давайте не будем скатываться в оффтоп