Ilkhom
у меня отсутствовал файл main.jsbundle
Aleksei
странно у вас) у меня норм заводилось)
Valery
Ребят подскажите можно ли девелопить react-native ios из под убунты? Или совсем без вариантов если мака нет у человека
Aleksei
сааавсем нет)
Aleksei
я конечно шучу) виртуалочка и вперед
Dima
expo/crna еще на начальной стадии
Valery
а ну точно
Valery
виртуалочка еще_
Valery
а что за expo? crna - create react native app?
Dima
да
Dima
expo.io
DeniskaAb
Я вообще в шоке от современного программирования
DeniskaAb
На костыле костыль, костылем погоняет
Aleksei
да вообще, даже в регистры писать не надо, что за программирование такое
DeniskaAb
На разных разновидностях одного языка, с трансляторами конвертерами и кучей говна
Aleksei
похоже на пенсию тебе пора) не в обиду 😉
DeniskaAb
да если бы не весило кучи и компилилось как го
Aleksei
вообще никто не мешает сделать тебе все круто)
Aleksei
если есть идеи как то пожалуйста)
DeniskaAb
не могу
Aleksei
ну сорян тогда че, юзаем то что есть)
DeniskaAb
на го мобайл надеялся, да не пошло
Eduard
На разных разновидностях одного языка, с трансляторами конвертерами и кучей говна
Я поступил вообще как) Посмотрел что для react-native мало компонентов ещё, взял V8 (тут тебе программирование на C++ на здоровье) и написал нужные обертки через JNI для Android, подготовил общий код для платформ и добавляю поддержку платформ - можно так, ну так проект мой позволяет это делать
Eduard
На выходе получается что ты программируешь на самом что нинаесть ECMAScript без babel, впиливаешь в V8 что нада, Hot reload есть, debug есть и пожалуйста - очень интересно
Andrew Efimenko
https://habrahabr.ru/company/efs/blog/325210/
Dima
Eduard
Да, C обертка над Java, поверх которой другая обертка на JS, чтобы обеспечить 80% кода платформ проекта на JS.
Eduard
По факту сейчас я только меняю код на JS. У меня практически не используются компоненты SDK, отрисовка Canvas и SurfaceView, определение примитивов и уже отрисовка на JS, свайпов нет. 60fps есть )
Dima
не в обиду, а наоборот, но сколько я таких велосипедов видел. Ничего плохого нет, конечно. JSCore давно использовали чтобы бизнес-логику шарить
Dima
и v8, видимо, тоже (с андроидом опыта гораздо меньше)
Eduard
А C код по сути повторно используется на другой платформе в Qt фронтэнде через дефайны, минуя X сервер на десктопе - для вывода графики и дешево и сердито. Java на Android по минумуму - я же привел пример оберток, работ по обертыванию было минимум
Dima
понятно, что для ui не нужно, а другие апи, например вебоскеты или сенсоры, пуши
Eduard
понятно, что для ui не нужно, а другие апи, например вебоскеты или сенсоры, пуши
Да, пуши обернуты из SDK Android, вебсокеты реализованы на C (libwebsockets) и вызовы к ним прокинуты через JNI из Java, сенсоры не используются, но при желании так же
Eduard
Здесь ключевое играет V8 - он компилируется на множество платформ. В то время как на JS создается инфраструктура проекта, переносимая. В проект добавляются новые устройства на разных архитектурах и нужно чтобы инфраструктура проекта переносилась в полном объеме - это было основным критерием. Получается что добавление и поддержка платформ всестороняя. Да, сложнее, приходится вникать глубже, но как бы понимаешь как работает ReactNative, Titanium и иже с ними.
Eduard
Простите за оффтоп, я закончил рассуждение темы велосипедостроения )
Oleg
👉 @javascript_jobs
Anonymous
Спасибо, направили добрые люди 😊
Alexey
Добрый день, не подскажите как обойти проблему такую: в reducer, хранилище есть center:{..}. Там начальные данные есть, при загрузки страницы срабатывает (componentWillMount) dispatch(actions.fetch(data)) куда в reducer заносятся новые данные, но в рендере я обращаюсь к reducer, хранилище и получаю те начальные данные, а не новые которые занес. Как решить это?
Murad
редюкс асинхронен
Murad
if store.center is old then return null
Murad
фетч то тем более асинхронен, возвращай спиннер например, а в редюкс сторе сделай флаг isFetching: true
Alexey
Флаг этот есть
Alexey
If store.isFetching==true then return store.center ?
Murad
оба параметра передавай в компонент
Murad
в компоненте уже от флага, решай что рендерить
Murad
store.center.list store.center.isFetching
Alexey
Ладно, спасибо. Буду пробывать
Alexey
store.center.list store.center.isFetching
Все никак не получается, ставил перед в return в render: if (!this.props.store.isFetching) return <Text> is Loading..</Text> И ругается
DeniskaAb
Разъясните This warning is caused by a @providesModule declaration with the same name across two different files. jest-haste-map: @providesModule naming collision: Duplicate module name: regenerator-runtime Paths: C:\testApp\AwesomeProject\node_modules\react-native\node_modules\babel-polyfill\node_modules\regenerator-runtim e\package.json collides with C:\testApp\AwesomeProject\node_modules\react-native\node_modules\regenerator-runtime\packag e.json
Alexey
Я генерирую карту в return и вот что говорит мне если вставить перед ретурном: Attempt to invoke virtual method 'void com.mapbox.mapboxsdk.maps.MapView.onResume()' on a null object reference
Murad
это к редюксу не имеет отношения
Murad
выясни чего он пытается вызвать этот метод
Murad
тот ли это null
Murad
и убери ! из проверки или переименуй isFetching в isFetched сам себя путаешь же
DeniskaAb
На слабом компьютере приложение реакт нейтив никогда не соберется?
DeniskaAb
Building 60% > :app:mergeDebugResources уже полтора часа
Владимир
насколько слабом?
Andrew Efimenko
У меня на mac mini 2009 с ssd собирается почти мгновенно
Andrew Efimenko
видимо дело в ssd
Aleksei
На слабом компьютере приложение реакт нейтив никогда не соберется?
конечно, реакт нэйтив приложение 😂 может андроид приложение
DeniskaAb
оно же на андроид билдится, нет? https://facebook.github.io/react-native/docs/getting-started.html
DeniskaAb
имеетс я в виду что на андроид все так туго билдится?
Anonymous
только первый раз
Anonymous
дальше там кешируется все
DeniskaAb
ясно
DeniskaAb
Да вообще тяжко компу
DeniskaAb
Еще и эмулятор
Alexey
Как можно организовать запуск приложения с firstPage один раз, в последующих запусках приложение должно запускаться с secondPage с учетом что с него можно попасть на firstPage и обратно
Alexey
Все на navigator держиться
Alexey
в хранилище допустим true/false стоит, на этом и будет орентироваться запуск
Aleksei
сохрани в AsyncStorage и оттуда читай был ли уже пользак там, а потом просто назначай первый роут
Aleksei
только тебе нужно заглушку показывать перед всем этим делом
Aleksei
пока с стораджа читается
Alexey
так и сделал, просто с firstPage на secondPage такой переход this.props.navigator.push({name: '..'})
Alexey
а если запущено с secondPage и зашел на firstPage то будет ругаться на это т.к. аналогичный код перехода