
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 формулируется как: «Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы»

Demuz
28.08.2018
18:33:17
Лучше донт ленись ёрселф))) Че то не люблю переменные перекладывать )

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 удаляю слушателя, да только проблема в том, что после срабатывания данного действия, роутер начинает везде такое вытворять, то есть по всем компонентам - выбрасывать на один конкретный скрин, и тут начинается багло

Dmitry
29.08.2018
05:38:26

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

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

Google

Dmitry
29.08.2018
06:10:29

Ruslan
29.08.2018
06:12:28

Никита
29.08.2018
06:14:36

Ruslan
29.08.2018
06:21:19

Nick
29.08.2018
06:28:33

Ruslan
29.08.2018
06:29:07

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

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?

Khorark
29.08.2018
07:19:05

✡️Хаски
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

Khorark
29.08.2018
07:42:47

✡️Хаски
29.08.2018
07:46:58

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

Dmitrij
29.08.2018
08:53:02
это одно и тоже

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

Gena
29.08.2018
11:14:16

Ruslan
29.08.2018
11:14:40

✡️Хаски
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

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
Ребяяяяята, памагити ? формирую 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, в нем рекваест заголовок содержит, проксирую через чарльза, токена в заголовке естественно нет. Как бороться с этой бедой?
Покажите строчку кода, где вы получате из AsyncStorage токен?

Google

Vetka
29.08.2018
13:00:27

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

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

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

Play
29.08.2018
13:05:10

Alexsandr
29.08.2018
13:05:53
а потом получить обратно объект когда тебе это надо

Play
29.08.2018
13:07:01

Alexsandr
29.08.2018
13:07:21

Play
29.08.2018
13:07:34