Ruslan
Правки в xcode делал
Nikita
там все по инструкции надо сделать
Ruslan
Не помогло
Nikita
Правки в xcode делал
ты установил их sdk в xcode ?
Eugene
Попробуй еще раз запуститьь:D
Ruslan
ты установил их sdk в xcode ?
По этому попробовал
Nikita
По этому попробовал
тебе нужно установить их sdk, потому что она есть в проекте, скорее всего
Nikita
раз такая ошибка
Nikita
или стоп
Nikita
ты с нуля проект создал ?
Eugene
Чот ты странное нагуглил :D
Ruslan
ты с нуля проект создал ?
Проект был с нуля создан, потом react-native upgrade и вот результат невнимательности
Ruslan
Пойду гуглить дальше)
Ruslan
Часто такая ошбика:)
А почему такая ошибка часто всплывает?
Eugene
Ааа, хз. В xcode legacy выставил?
Ruslan
Не, такого не ставил
Eugene
Eugene
file > project settings
Ruslan
Nikita
legacy поставь
Eugene
Build System > Legacy Build System
Cenator 🐈
Показывай
Cenator 🐈
Ты что-то асинхронно загружаешь?
Gena
Ну как бы легко - заводите в state переменную, которая инициализируется в false, а потом, когда всё загрузилось в true выставляется. И начинаете загрузку экрана в componentDidMount. А в render в зависимости от значения этой переменной показываете спиннер или саму начинку экрана.
Eugene
а подгружать эти 1000 итемов по чуть-чуть нельзя?
Gena
Да, но FlatList так и работает сам по себе
Gena
Там есть "ручки" даже, где это можно подрегулировать
Gena
Профайлер!!!
Gena
Хоть console.log(Date.now()) вставьте в разных местах... у вас что-то не то, так не должно быть )
Gena
FlatList изначально не должен рендерить 1000... он должен рендерить https://facebook.github.io/react-native/docs/flatlist#initialnumtorender
Gena
Ох... можете сделать на github минимальный сэмпл с таким поведением, чтоб можно было здесь показать (я бы покопался в коде) и если что к issue приложить?
Gena
Т.е. там не должно быть ничего секретного и чем меньше кода всё ещё воспроизводящего проблему, тем лучше
Gena
Ага )
Gena
Это гугл-java
Gena
Написал "сэмпл" и подумал, что может быть не понятно... имеется ввиду минимальное запускаемое приложение... которое можно слклонировать, сделать npm install, react-native start и посмотреть
Gena
Я не дописал... да, всё верно... у меня был такой код... сейчас пример пришю
Ruslan
Build System > Legacy Build System
Проект начал собираться, в зависимостях реакт указан не был в xcode)
Ruslan
Странно
Ruslan
После обновления реакт натива всегда так?
Gena
После обновления реакт натива всегда так?
По разному... я когда-то "наелся" с автоматикой и с тех пор вручную обновляюсь... смотрю вот здесь, что поменялось и сам правлю файлы: https://github.com/ncuillery/rn-diff
Ruslan
А еще такой вопрос, в репозиторий, заливать pods установленные, или их надо в игнор кидать?
Gena
@in4core_studios_llc Вот так я в одном из проектов делал экран... эта штука сперва рендерит декорации (заголовок и табы) чтоб не мигали... и только потом основной контент, который ему засунунули в children. Я немного урезал пример и выкинул стили и часть не относящуюся к делу, и ещё он на typescript и mobx, но сути это не меняет... с таким же успехом можно toolBarHeight в state засунуть и setState вызывать вместо прямого присваивания. https://gist.github.com/vovkasm/895a9122e04a23772fcc87a3fca9311a
Gena
А еще такой вопрос, в репозиторий, заливать pods установленные, или их надо в игнор кидать?
Это все по разному решают... мы коммитим, т.к. в этом случае с проектом могут работать люди, которые ничего не знают про cocoapods и не умеют с ними обращаться
Ruslan
Спасибо!
Eugene
кстати когда создаешь проект - там в gitignore есть ссылка которая описывает плюсы обоих подходов) Я игнорю их 🤔
Eugene
# CocoaPods # # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at:
Eugene
https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
Gena
Полагаю, что это всё из вот этой серии https://reactjs.org/docs/render-props.html (ну или очень похоже)
Maxim
<Component {...props}/>
Gena
Только не как array, смотрите, это же просто "сахар", вот как это поэтапно разворачивается (и для ES5 именно в это babel транслирует, с некоторыми доп проверками, правда): 1. <Component {...props} />
Gena
2. React.createElement(Component, {...props}) (разворачиваем jsx)
Gena
3. React.createElement(Component, Object.assign({}, props)) (разворачиваем ...)
Gena
Если Object.assign не реализован, то туда вызов полифилла вставляется, который как-то так работает (это упрощенный вариант, он не совсем верный, но идею должен передать): function assign(target, src) { for (const prop in src) { target[prop] = src[prop] } return target }
Michael
всем привет такая проблемка нарисовалась мож кто встречался или как диспачить в редакс из компонента который внутри drawernavigator-a
Gena
Друзья, а как вы ошибки обрабатываете (те, которые как исключения передаются). Я вот к чему, допустим есть код: try { ... } catch (e) { somelogger.log('Error: ', e) }
Gena
И вот этот e может же быть чем угодно
Gena
Я могу в каждом таком месте делать что-то типа const msg = e.message ? e.message : '' + e и приводить к строке, но при этом стек теряется. С другой стороны с этим стеком всё равно сделать ничего невозможно без source maps... Кто какие стратегии логгирования использует?
Gena
Тут просто есть разные случае. Есть ошибки на которых надо упасть... и с ними всё просто, там просто не надо catch никаких, либо rethrow делать и по ним RedBox или Sentry отлично отработают (но приложение закроется у пользователя). Это фатальные ошибки. А вот есть ошибки, про которые мне интересно знать что они есть и интересны подробности, но падать там не надо. Более того стек не надо до верха раскручивать. Т.е. я их в нужном месте перехватываю в catch блоке и вот дальше хочется их залоггировать. В идеале со стек-трейсом (но можно и без него...). Вот думаю как стрингифицировать правильней. (Ну и про стек-трейс тоже заодно...)
Pasha
Друзья, а как вы ошибки обрабатываете (те, которые как исключения передаются). Я вот к чему, допустим есть код: try { ... } catch (e) { somelogger.log('Error: ', e) }
Там, где я знаю что может упасть и интересно, там просто .catch, а там где не знаю, но интересно - в корневом компоненте componentDidCatch и там ловлю и показываю экран что все сломалось, но вы можете попробовать пользоваться дальше
Кирилл
Друзья, а как вы ошибки обрабатываете (те, которые как исключения передаются). Я вот к чему, допустим есть код: try { ... } catch (e) { somelogger.log('Error: ', e) }
Не знаю чем это может помочь, но в тему - сегодня как раз читал. Там есть что-то про "silent crash" (они так называют) реализаций понятное дело там нет, но ребята юзают HockeyApp и говорят что руками пишут крэши какие надо. В итоге прилетают им в реепорты и такие и такие 🙂 может к чему подтолкнет этот тред. По типу где не надо падать - репортить без throw Error, в остальных местах бросать свои исключения мб
Кирилл
https://twitter.com/mobileunderhood/status/1086536652376428544
Gena
Не знаю чем это может помочь, но в тему - сегодня как раз читал. Там есть что-то про "silent crash" (они так называют) реализаций понятное дело там нет, но ребята юзают HockeyApp и говорят что руками пишут крэши какие надо. В итоге прилетают им в реепорты и такие и такие 🙂 может к чему подтолкнет этот тред. По типу где не надо падать - репортить без throw Error, в остальных местах бросать свои исключения мб
Да, спасибо! Этот функционал есть в Sentry, я им пользуюсь, но не тестировал ещё. Кажется там будет та же проблема, что я сейчас с консолью вижу. И собственно, проблема в том же. Надо как-то залоггировать ошибку (которая может быть чем угодно). Я сейчас выделяю следующие виды: 1. не объект (чаще всего строка) 2. инстанс объекта Error 3. объект с шейпом близким к Error, но кастомный (Это из натива в RN умеет приезжать)
Gena
Я понял, что пытаюсь решить целый пучок проблем совершенно разных. Надо по одной, иначе даже описать не получается четко )))
Gena
Вот вопрос. Есть объект у которого Error в прототипе. Как его залоггировать через console.warn/console.error в RN так, чтоб стектрейс декодированный увидеть не точки логгирования, а того места, где этот объект родился? (DEV=true)
Ruslan
Как можно починить проблему с ":CFBundleIdentifier", Does Not Exist, из xcode проект запускается без проблем, но стартуя командой запуска ios из консоли сборка с ошибкой этой
Michael
Всеи привет, есть вот така странность когда запускаю приложение на iphone то <View onLayout={event => this._onLayout(event)} не вызывается, а когда на симуляторе, то все вызывается. в чем может быть проблема и есть или еще способ узнать высоту view ?
不退転」
Пипл, такой вопрос, юзер находится на экране Х, если юзер делает force quit из приложения, вызывается ли на экране Х метод componentWillUnmount?
Кирилл
Пипл, такой вопрос, юзер находится на экране Х, если юзер делает force quit из приложения, вызывается ли на экране Х метод componentWillUnmount?
не скажу точно про рн, но в нативке Android force stop убивает процесс, происходит force finishing activity и ни у кого onDestroy() не вызовется. Скорее всего и в рн произойдет что-то похожее
Кирилл
Кто-нибудь работал с декораторами? Проблема такая - у таргета хочу достать имя target.constructor.name, достаю, но в релизе после минификации возвращает не исходное имя, то есть не MyClass а какой-нибудь n. Вопрос - как можно достать реальное имя? Или как в декоратор свойства неявно передать тип декорируемого свойства? гугление наводит на мысль что никак) остается вариант с получаением реального имени инстанса class MyClass { @decorator foo!: Bar } Не очень хочется явно передавать @decorator(Bar)
Rinat
ребят привет. вопрос. новые приложения исключетельно только через экспо? crna все?