чей ты
Посоветуйте какой плеер для воспроизведения видео с YouTube в RN?
Khorark
чей ты
WebView
как открыть видео в fullScreen ?
Khorark
чей ты
Khorark
1ое
https://github.com/teamairship/react-native-android-fullscreen-webview-video#readme
Khorark
чей ты
John
Начал тут учить react native по вынужденным причинам, оказывается есть и vue native, который тоже работает с expo
Может кто-то успел поработать с обоими инструментами и может сказать свое мнение?
Просто слышу постоянно, что react говно, а vue весь такой классный, может тогда стоит сразу на vue native делать приложение?
P.S. я бэкендщик, поэтому вопросы могут быть глупые)
Dmitrii
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
Gena
Ruslan
чей ты
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
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
Gena
Извините, если что... это моя личная неприязнь к async/await стилю... оно было призвано сэкономить ровно один отступ, а вместо этого непропорционально увеличило ментальную нагрузку на чтение кода...
Alexsandr
asyncstore
Alexsandr
только в стринг может
Alexsandr
ну ты можешь туда объект положить, в stringify
Alexsandr
а потом получить обратно объект когда тебе это надо
Alexsandr
это уже другой вопрос)
Elizaveta
потому что сохраняю туда объект
Elizaveta
спасибо, погляжу))
Elizaveta
там помимо access token еще время истечения и рефреш токен
Evgeniy
кто-нибудь загружал картинки на сервер используя axios? можно пример?
Raven
Raven
такие вопросы решает первая строчка в гугле
Raven
http://lmgtfy.com/?q=axios+file+upload
Evgeniy
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
Raven
Alexsandr
Alexsandr
и люди приходят сюда за помощью
Alexsandr
а не за критикой
Aleksei
ну новичкам конечно тоже неплохо бы знать как задавать вопросы, подетальнее там и все такое, но я все надеюсь что этому учит "тишина" в чате в ответ на вопрос 😄
просто нужно быть всем вежливее друг к другу
Raven
ну так перед тем как изучать фреймворки нужно освоит базовые вещи. это знаешь как начать строить дом и не понимать что ты делаешь и зачем
Alexsandr
Alexsandr
он прям с react начал
Alexsandr
и щас вроде уже норм
Aleksei
давайте не будем скатываться в оффтоп
Alexsandr