Peter
окей спасибо
Катан!
Господа подскажите пожалуйста, пытаюсь в react-navigation передать данные с одно экрана на другой, понял что для этого вроде как можно юзать this.props.navigation.state.params, но при попытке вывести текстом стейт на втором экране говорит мол undifined is not an object (я так понимаю он этих данных все равно не видит??)
Катан!
а в дебагере что?
TypeError: TypeError: TypeError: TypeError: undefined is not an object (evaluating 'this.props.navigation.state.params.cars')
Катан!
На первом экране: this.props.navigation.setParams({ car: 'none', dateBefore: '', dateAfter: '', routes: true })
Alex
На первом экране: this.props.navigation.setParams({ car: 'none', dateBefore: '', dateAfter: '', routes: true })
не юзал такое. обычно, передаю вторым параметром обьект, и тогда они приходят
Катан!
не юзал такое. обычно, передаю вторым параметром обьект, и тогда они приходят
при попытке логнуть данные со второго экрана, да хотя бы this.props.navigation.state.params он выдает undefined
Cenator 🐈
много кто, вопрос задавай
Катан!
как-то так this.props.navigation.navigate('Screen2', { data });
это получается он при переходе передаст? а куда они лягут? так же в парамсы?
Катан!
да, туда же
спасибо, сейчас затестимо
Cenator 🐈
что он должен подхватывать?
Cenator 🐈
это зависит от библиотеки, из react-intl у меня подсказываются компоненты, из react-native нет, думаю дело в тайпингах
Cenator 🐈
Катан!
да, туда же
большое спасибо, то что надо ❤️
Dmitry
У меня подсказывает все
Dmitry
И пропсы и методы (правда иногда глючит)
Dmitry
Ну у меня много расширений стоит
Dmitry
Могу глянуть список
Peter
Кто нибудь вообще использовал в react-native приложении, в xcode проекте, нативные платформенные фреймворки? к примеру ARKit.framework или CoreBluetooth.framework и тд
Peter
и те фреймоврки, что за собой тянут требование своего правила в info.plist
Peter
заводятся ли они у вас?
Peter
у меня что-то нифига не получается вторые сутки завести ExternalAccessory.framework
Peter
<key>UISupportedExternalAccessoryProtocols</key> <array> <string>com.aktivco.rutokenecp</string> </array>
Peter
как будто бы игнорируется это в info.plist
Peter
так как идентичный код с этим правилом в рабочем примере (в песочнице, без react-native) работает
Kirill
Привет, вопрос есть, в самом react native потоки плодить нельзя же, если я сделаю в нативной части модуль, чтобы он обрабатывал какие-то данные в потоке это будет считать нормальным ?
Gena
Там все нативные модули в отдельном потоке ) Так что норм.
Gena
Потоки только в JS плодить нельзя, он весь однопоточный
Kirill
в смысле, для каждого нативного модуля, к примеру запись в файл или еще что-нибудь будет свой поток ?
Gena
https://facebook.github.io/react-native/docs/native-modules-ios#threading
Kirill
спасибо
Катан!
как-то так this.props.navigation.navigate('Screen2', { data });
а можно вытворять подобное без перехода на этот экран? я теперь думаю как при получении новых параметров на первом экране, обновлять инфу на втором
Катан!
т.е. я так понимаю нужно управлять стейтами второго экрана с первого, чтоб он знал когда нужно перерендерить все, но как.. ._.
Катан!
не надо так делать... 🙁
я понимаю что это лютейший говнокод
Катан!
думаю вот как хахах, я 2 дня на реакте пишу, можешь смело кинуть помидор и отправить учить паттерны
Gena
Просто чтоб этот говнокод написать, придется ещё кучу проблем преодолеть )))
Gena
Проще ещё час про redux/mobx почитать )
Gena
И вытащить модель данных из экранов )
Dmitry
Я же скидывал шаблон с редаксом и навигацией
Катан!
Я же скидывал шаблон с редаксом и навигацией
Да мне по сути одну задачку решить осталось, сейчас добью и буду разбираться по человечески. Есть методы push и navigate и они доставляют нужные данные, вот только они переключают на экран, а мне бы остаться на первом :c
Cenator 🐈
Оххх
Gena
Многие очень сложные проблемы в программировании начинались с одной маленькой задачки. К примеру, найти запись в адресной книжке ))
Dmitry
Dmitry
Я там все очень просто сделал
Dmitry
Так что будет легко
Катан!
А зачем тебе обновлять данные на экране который ты не видишь ?
плохо объяснил, я хочу чтоб всегда после нажатия на кнопку на первом экране, происходил перерендер с новыми данными которые я подсовываю
Катан!
во
Катан!
данные я могу подсунуть, как перерендерить?
Vitaly
плохо объяснил, я хочу чтоб всегда после нажатия на кнопку на первом экране, происходил перерендер с новыми данными которые я подсовываю
Перерендер текущего экрана ? Я просто не совсем понял как это вяжется с навигацией, или это не связанные вопросы ?
Катан!
Перерендер текущего экрана ? Я просто не совсем понял как это вяжется с навигацией, или это не связанные вопросы ?
Нет, есть первый и второй экран, на первом данные для выбора, я на нем получаю данные, собираю новые. На втором список, список до нажатия кнопки должен быть пустой, а после нажатия заполниться данными которые я получу на первом экране. Соответственно я должен в любой момент переключаться между этими экранами и при повторном наборе данных на первом перерендерить список на втором
Катан!
брр
Катан!
Ща, сокращу
Aynur
при переходе на 2 второй экран передаете через params то, что нужно и всё
Aynur
у вас каша в голове)
Aynur
очень сложно понять что вы хотите
Катан!
при переходе на 2 второй экран передаете через params то, что нужно и всё
передавать то передаю, но как мне его перерендерить после передачи?
Vitaly
Поддерживаю, то слижно как то )
Aynur
а зачем его перерендерить нужно?
Vitaly
передавать то передаю, но как мне его перерендерить после передачи?
Получаешь в парамсах данные и делаешь сетстейт
Aynur
+
Катан!
Получаешь в парамсах данные и делаешь сетстейт
А если данные в парамсах не переданны просто обработчик сделать?
Vitaly
Например в componentDidMount
Vitaly
Он отработает, когда экран отрисуется
Vitaly
Там делаешь обработчик данных, и обновляешь стейт
Катан!
Например в componentDidMount
пользователь не получает данные на первом экране, сразу идет на второй и приложуха крашится)
Vitaly
Если данных нет, не обновляешь
Катан!
вот да, про это я спрашивал, через try except лучше всего сделать?
Aynur
ну проверяйте на наличие params во втором экране
Катан!
или как, я просто после делфи хахах
Vitaly
Абстрактно, иф дата - обнови
Aynur
можно просто if(this.props.navigation.state.params)
Aynur
вроде так
Vitaly
Елсе сделай пустой массив, если это рендер списка
Vitaly
Либо this.props.navigation.getParam(“paramname”, defaultvalue)