@reactnative_ru

Страница 221 из 878
Umren
04.07.2017
20:51:10
почему он вообще в конструкторе вызывается

morda
04.07.2017
20:51:17
Эт прям хороший вопрос на собеседе) в гугле тыщи ответов)

Ywein
04.07.2017
20:51:43
https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

Umren
04.07.2017
20:51:55
все короче

Google
Umren
04.07.2017
20:51:58
работает

this.animate = this.animate.bind(this); this.handleRefresh = this.handleRefresh.bind(this);

так да, видят друг друга

про bind надо почитать, не врубился в этот момент

morda
04.07.2017
20:52:24
Используй стрелочные

Umren
04.07.2017
20:52:30
да уже переделал

morda
04.07.2017
20:52:51
Поставь линтер от аирбнб он по рукам бить будет

Umren
04.07.2017
20:52:51
animate = () => { Animated.timing( this.state.rotateAnim, { toValue: 1, duration: 500, easing: Easing.linear, useNativeDriver: true, }).start(); } handleRefresh = () => { this.animate(); }

в общем всем спасибо за помощь, так то вроде почти все понятно)

кроме некоторой js специфики

Алексей
04.07.2017
20:57:47
нашел какие то рефы которые задают свойство компонента через анонимную функцию
да, делай через рефы. и там на самом деле все просто, ты получаешь инстанс объекта (компонента) и его методы вызываешь

morda
04.07.2017
20:59:30
Уже? Читал что через пень колоду работает пока

Google
Алексей
04.07.2017
21:00:15
morda
04.07.2017
21:01:06
Ну хз))

А либа какая?

Алексей
04.07.2017
21:02:00
Animated)

morda
04.07.2017
21:02:38
Нпм и аниматед?)

Надо поглядеть

Алексей
04.07.2017
21:03:41
да вот даже пример и статья есть http://animatedjs.github.io/interactive-docs/

Umren
04.07.2017
21:07:34
после дня знакомства с реакт нейтив думаю что это все же не плохая штука, но пока рано судить)

с view layer тут точно быстрее чем в нативе работать

ну и как то все просто и логично по большей части

Umren
04.07.2017
21:10:19
flutter надо когда-нибудь еще попробовать

по крайней мере реакт нейтив это серьезный прогресс относительно кордовы и иоников всяких

там какой то полный рак по перфомансу)

Алексей
04.07.2017
21:16:15
я так и не понял как во флаттере 120 фпс выдается)

и самое главное зачем) vr что ли сразу)

Umren
04.07.2017
21:17:38
ну там нет прослоек никаких и рендер через кую то мега шуструю либу

на девайсах поддерживает вулкан и метал для рендера

короче все серьезно)

правда альфа

Google
Ywein
04.07.2017
23:28:49
120фпс как то в последнюю очередь волнует)

Play
04.07.2017
23:46:42
E/AndroidRuntime: FATAL EXCEPTION: Thread-8 Process: com.isk, PID: 21870 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RemoteViews.setTextViewText(int, java.lang.CharSequence)' on a null object reference at com.audioStreaming.Signal.playerMetadata(Signal.java:333) at com.spoledge.aacdecoder.IcyInputStream.parseMetadata(IcyInputStream.java:231) at com.spoledge.aacdecoder.IcyInputStream.fetchMetadata(IcyInputStream.java:205) at com.spoledge.aacdecoder.IcyInputStream.read(IcyInputStream.java:133) at com.spoledge.aacdecoder.BufferReader.run(BufferReader.java:155) at java.lang.Thread.run(Thread.java:764) Как полечить этоу ошибку?

Алексей
05.07.2017
05:24:23
а то если честно звучит как какая то замануха

и то что нет прослоек тоже как то странно, че прям на шейдерах писать что ли надо. но емнип там дарт

Egor
05.07.2017
05:43:44
Повторюсь: есть у кого-нибудь успешный опыт с Flow + ESLint ?

lamo2k
05.07.2017
05:44:41
Повторюсь: есть у кого-нибудь успешный опыт с Flow + ESLint ?
А какая у тебя проблема с флоу и линтом

Egor
05.07.2017
05:46:00
1) Правила для ESLint чтобы не ругался на типы 2) Конфиг для Flow чтобы проверял только мой код, а node_modules не трогал и при этом видел RN и прочее, но на них не ругался Как-то так

Сейчас еще буду пробовать. Мне просто надо сделать всё так, чтобы потом Jenkins мог собирать apk запуская перед этим скрипты какие-нибудь для проверки кода ESLint'ом и желательно Flow

Алексей
05.07.2017
05:49:10
я с flow давно не работал, но гугление 'react native flow eslint' выдало кучу статей

Egor
05.07.2017
05:49:19
ага конечно

именно их я вчера и лопатил одну за другой

Egor
05.07.2017
05:50:10
как включить да настроить по дефолту - это всё есть, работает

Алексей
05.07.2017
05:51:02
ну на твой вопрос есть ответ, у тех кто писал статьи есть успешный опыт ?

Egor
05.07.2017
05:51:13
=)

под конец дня нашел это https://github.com/flowtype/flow-typed

и советовалось сделать определения для non-Flow либ

и тогда он якобы перестанет ругаться...

а то сейчас ошибки вида: node_modules/react-native/packager/src/node-haste/DependencyGraph.js:283 283: this._opts.roots ^^^^^^^^^^^^^^^^ unused function argument

Алексей
05.07.2017
05:53:18
ну надо в конфиге игнорить либы

Google
Алексей
05.07.2017
05:53:25
чтобы он их не чекал

Egor
05.07.2017
05:53:30
тогда он в моём коде их не видит =)

https://github.com/reactjs/react-redux/issues/137

вот релевантная issue

я то спросил, в надежде, что кто-то уже сделал такое. Сделаю сам - напишу.

Алексей
05.07.2017
05:55:55
ну вот смотри, я далеко ходить не стал, смотрю старый добрый f8app https://github.com/fbsamples/f8app/blob/master/.flowconfig

Egor
05.07.2017
05:56:19
он весь на Flow?

Albert
05.07.2017
05:56:31
Привет. почему при вызове метода getItem я получаю { _48: 0, _81: 0, _1: null, _36: null }, вместо нормального значения? хотя в самой функции, если выводить в консоли значение правильное. import { AsyncStorage } from 'react-native'; export default class UserDefaults { static async getItem(key) { const value = await AsyncStorage.getItem(key); return value } }

Алексей
05.07.2017
05:56:59
он весь на Flow?
каждый файл я не смотрел)

Egor
05.07.2017
05:57:11
ладно =)

Admin
ERROR: S client not available

Egor
05.07.2017
05:57:45
.then().catch()

Albert
05.07.2017
05:57:54
Ну так я делаю await

Albert
05.07.2017
05:58:35
val = UserDefaults.getItem("skipWalkthrough");

Алексей
05.07.2017
05:58:53
тебе надо делать val = await UserDefaults.getItem("skipWalkthrough");

Google
Albert
05.07.2017
06:02:28
А нельзя это как-то по другому сделать?

Алексей
05.07.2017
06:03:11
UserDefaults.getItem("skipWalkthrough").then(val => console.log(val))

Albert
05.07.2017
06:04:16
static getItem(key) { AsyncStorage.getItem(key).then((value) => { return value }) } А если мы возвращаем значение?)

Алексей
05.07.2017
06:05:11
ну ?ты просто в функции вызывешь AS и результат никак не используешь

скажи лучше как ты это хочешь использовать

Albert
05.07.2017
06:06:40
Я хочу сделать некий класс, при помощи которого я буду взаимодействовать с системными настройками приложения, хочу чтобы было не напрямую через AS

Т.е надо вот так ? static getItem(key) { return AsyncStorage.getItem(key).then((value) => { return value }) }

Алексей
05.07.2017
06:07:47
как ты хочешь использовать этот класс?

Т.е надо вот так ? static getItem(key) { return AsyncStorage.getItem(key).then((value) => { return value }) }
ну в таком случае ты вообще бесполезную работу делаешь) ты возвращаешь опять промис, и еще есть ничего не делающий then

Albert
05.07.2017
06:08:45
Да, уже понял.

Алексей
05.07.2017
06:09:03
мне кажется ты не понимаешь как промисы и колбэки работают в js)

Albert
05.07.2017
06:09:20
Я хочу чтобы на getitem() мне возвращался true или false, в зависимости от значения.

Да, я не до конца понимаю как они работают, в js я 2 неделю только)

Алексей
05.07.2017
06:11:04
я могу конечно объяснить, но лучше тебе просто почитать что такое асинхронное программирование

Albert
05.07.2017
06:11:40
То, что я хочу сделать вообще реально?

Алексей
05.07.2017
06:12:41
реально, вполне. я просто боюсь что ты так и будешь пытаться угадать, пока не поймешь как оно работает хотя бы приблизительно.

Albert
05.07.2017
06:13:37
Я почитаю, но можешь в кратце объяснить как это утроено?)

Egor
05.07.2017
06:14:55
ниже слоем у тебя лежит асинхронный компонент, получить синхронный доступ к значениям ты сможешь только через еще один слой в виде какого-то кэша

который тебе время от времени надо будет синхронизировать каким-то образом, я бы посоветовал всё же адаптировать свой клиентский код к этому асинхронному поведению хранилища

Алексей
05.07.2017
06:18:08
очень вероятно что я так только запутаю тебя) но если так хочешь, то js однопоточен, когда код выполняется он это делает инструкция за инструкцией, это синхронное выполнение, но в js есть еще такая штука event loop, ее смысл в том, что например когда ты обращаешься например к AS, то идет вызов к нативному коду, но js в это время продолжает работать дальше, когда нативный код отработал, ему как то надо сообщить в js результат, для этого в event loop в конец очереди ставится код колбэка который ты передал (у промисы будет код промиса) и вызывается когда js полностью отработает и не занят.

Egor
05.07.2017
06:18:33
чтобы он их не чекал
в итоге я добавил в конфиг flow по совету jukben отсюда https://github.com/facebook/flow/issues/3875 // file .flowconfig module.name_mapper='\(react-native\)' -> '<PROJECT_ROOT>/modulesStub.js' // file modulesStub.js export default {} ну и в ignore <PROJECT_ROOT>/node_modules/.* может быть потом надо будет module.name_mapper для других модулей прописать, не знаю - пока у меня чистый RN темплейт...

Константин
05.07.2017
06:51:46
как включить да настроить по дефолту - это всё есть, работает
Я починил именно через flow-typed. Для каждой либы, на которую ругался flow, сделал libdef (или как он там называется) через flow-typed install

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