Danila
особенно в рендере списков
Gena
в варианте со стрелочной функцией на каждый вызов render вы создаете новую функцию
А, вы не про саму стрелочную ф-цию, а про её конкретное местоположение. Вопрос снимается. Но хорошо, что вообще это обсуждение началось. Это полезно проговаривать регулярно - чтоб никто не забывал и вновь присоединившиеся знали )))
Preeternal
Странно. Предыдущий сеньор меня отучал вообще от конструктора. This.state в нем и от bind
Preeternal
Есть пример шаблона до rendera?
Danila
Странно. Предыдущий сеньор меня отучал вообще от конструктора. This.state в нем и от bind
хм меня наоборот по поводу this.state возможно имелось ввиду не задавать начальный стейт от пропсов, так как пропсы могут изменится, а стейт уже нет. Но в этом случае берется componentWillReceiveProps или getDerivedStateFromProps
Gena
Странно. Предыдущий сеньор меня отучал вообще от конструктора. This.state в нем и от bind
Может он про другое говорил? Не путайте синтаксис и само действие... вот здесь видите биндинг или конструктор? А они есть ))) class SomeComp extends React.Component { onPress = () => { console.log('pressed') } render() { return <Button onPress={this.onPress} /> } }
Preeternal
Кстати вы были правы. Обновил до 0.58.3. полёт нормальный
Gena
👍
Danila
Решено. View pointerEvents="none"
ты просто офгенный чувак
Danila
я пытался поинтер ивент писать в стили (по привичке с css). и не понимал, почему не работает
Steve
Кто-нибудь работал с нейтивом и фоновыми потоками?
Steve
Я пытаюсь прикрутить react native threads но оно не позволяет работать если Активити закрыли
Steve
Вообще не понимаю как сделать так что бы при закрытии Активити (и живом процессе) не останавливалась работа
Gena
Вообще не понимаю как сделать так что бы при закрытии Активити (и живом процессе) не останавливалась работа
А документацию читать пробовали по Android SDK? Ключевое слово service, но на js писать не получится скорей всего...
Steve
У меня больше 10 лет опыта только разработки под мобилки. Сервисы это вообще фейковая сущность в андроиде полезная для того что бы как-то сказать системе что бы она не убивала процесс приложения.
Steve
Пользы от этого практически ноль
Steve
Headless JS не имеет никакой доки о том как оно может говорить с главным процессом
Сергій
🤨
Dmitry
с биндом думаю тоже самое
нет не тоже. Только стрелочные функции являются анонимным и то, поререндер будет только, если стрелочная функция явно обяъвлена в методе render render() { ....... <Component onPress={() => {}} /> .... }
Dmitry
или как любят делать <Component onPress={() => this.setState({ ... })} />
Dmitry
Но если все стрелочные функции заведомо объявить внутри компонента и передавать в пропсы, как onPress={this.onPress} никакого перерендера не будет
Dmitry
bind можно использовать как хак, когда нужно в хендлеры прокинуть внешние параметры, при этом не создавая стрелочную функцию в рендере <Button onPress={() => this.onPress(someVar)} />
Dmitry
Но можно сделать так <Button onPress={this.onPress.bind(this, someVar)} /> и тогда в хендлер уже упадут наши параметры вместо event а функция перестанет быть анонимной
Dmitry
Но в таком случае, я бы вынес кнопку в отдельный компонент и нужный внешние параметры прокинул через пропсы и вернул назад обычным способом
Dmitry
У многих новичков именно это вызывает непонимание и привносит боль ререндера в мобильные- и веб- приложения
Gena
У меня больше 10 лет опыта только разработки под мобилки. Сервисы это вообще фейковая сущность в андроиде полезная для того что бы как-то сказать системе что бы она не убивала процесс приложения.
Ок, тогда вы знаете как это сделать на java, делайте, в том месте, где вам бы понадобилось вставить логику на java дергайте глобальную javascript ф-цию в JSC (не забудьте убедиться, что JSContext существует). Из этой js функции нельзя дергать ничего, что через бридж попробует обратиться к UI (то, чему нужен getCurrentActivity, т.к. он скорей всего будет null https://github.com/facebook/react-native/blob/0.58-stable/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java#L336). JS ф-цию можно вызвать вот так: https://github.com/facebook/react-native/blob/0.58-stable/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java#L43
Steve
Это не функция, это полноценный процесс в котором лежит graphql и еще пара штук для синхронизации данных. Насколько я вижу все либы что есть в гитхабе почему-то убивают как только активити будет мертво. Почему никто такого не сделал или это принципиально невозможно? Или headless js позволяет нормално запускать подобные сервисы и взаимодействовать с ними через какое-нибудь апи из основного приложения?
Steve
да я понимаю но в упор не понимаю почему нельзя такую банальную вещь сделать
Steve
уже и ковыряю там все
Gena
Я себе похожие вопросы по 10 раз на дню задаю, когда в коде RN копаюсь ))) Там много наслоений недоделанных и переделанных архитектурных решений... в общем бардак, это да... )
Steve
да, мы у себя даже их UI кит выкинули
Steve
написали свой реконсайлер реакта и сделали fblitho + texture для производительных мест
Gena
Вау... т.е. у вас UI не через ReactViewGroup?
Steve
неа
Steve
плюс мы еще написали либку для анимаций
Steve
тк реализация в нейтиве убогая - так в принципе нельзя делать анимации на мобайле..
Gena
Это правда. Но тогда у вас от RN фактически ничего сложного не осталось, наоборот проще свой бридж написать.
Сергій
А есть где посмотреть? )
Steve
Мы пока используем экосистему
Steve
есть куча либ которые делают правильные вещи
Steve
и есть в нативной разработке такие ядерные вещи что уже на удивление решены в нейтиве
Steve
(например скрыть клаву в андроиде лол)
Gena
О да... я видел этот код ))))))
Steve
плюс я заметил что бридж адовый в андроиде
Сергій
Steve
у меня айфон раз в 10 быстрее
Сергій
Сравнил 🌚
Steve
смотрю код а там полно рефлексии
Steve
смотрю в гитхабе и вижу огромное обсуждение где команда решила что это не так уж и быстрее будет если выпилить рефлексию (а у меня туда почти все уходит по времени)
Gena
Я потому и говорю, что если вы view слой смогли переписать, то у вас достаточно ресурсов чтоб заменить бридж более простым решением
Steve
все-таки пол приложения на обычном нейтиве
Gena
turbo modules, обещают почти без рефлексии... но ждать ещё долго
Gena
но с кодогенерацией
Steve
угу я читал и не понимал
Steve
там уже пять лет как есть кодогенерация
Steve
они просто не вмерджили
Gena
но это всё равно будет наслоение новой архитектуры, от старого не избавятся ещё очень долго
sanqa
ребят кто нибудь пользуется Frame X ? как вам
Steve
Судя по коду кстати можно просто не вызывать destroy хоста и все должно работать
Gena
я на это и намекаю )
Steve
то есть... они тупо не сделали нормально?
Gena
там правда не уверен, что всё... надо проверить кто ещё на onHostDestroy подписан и что делает
Steve
там есть комментарии к лайфсайклу, сказано что если минимизировать активити то оно ставится на паузу, если запустится новое то просто продолжится выполнение на новом активити (кажется0
Steve
то есть оно может туда-сюда летать
Steve
между активити
Steve
ток я боюсь бриджа, это должно быть тяжело писать
Surik
Спасибо за курсы Когда будет новый урок?
Diana
Всем привет, у кого-нибудь были кейсы как игнорить самоподписанный сертификат на бэке если юзать graph ql в RN?
Steve
Можете кстати попробовать наш апп - https://openland.com/joinChannel/S9l5BKu
Steve
сначала надо ток в вебе войти в чат, а потом в сторах качать
Gena
то есть оно может туда-сюда летать
Да может. Но помню, когда экспериментировал с навигацией на уровне Activity (т.е. их было много), я тогда ещё только разбирался как это устроено, и stop/start не вызывал правильно, то у меня что-то ломалось... оно там во многих местах когда из js дергается расчитывает на наличие currentActivity
Diana
Graphql тут не при чем
Просто уточнила все нюансы
Steve
ну мне главное что бы оно просто не умирало и не пересоздавалось
Steve
как в айфоне в общем-то
Gena
Если поделитесь результатами, будет здорово!
Gena
В смысле получилось ли
Diana
Всем привет еще раз, у кого-нибудь были кейсы как игнорить самоподписанный сертификат на бэке в RN?