Alexander
Ты спросить что-то хотел или как?:)
Anonymous
Мне интересно правильно ли решать идеологию навигации большим свитч кейсом
Anonymous
у всех ли так или какие то другие интересные наработки
Alexander
Я ничего страшного не вижу. Например, ты можешь написать функцию, которая будет брать нужный экран из какой-нибудь карты роутов, если тебя именно свитч-кейс смущает
Sergey
у всех ли так или какие то другие интересные наработки
https://github.com/aksonov/react-native-router-flux - навигация через экшены
Anonymous
NavigationExperimental — тут тоже через екшины можно
Anonymous
точнее так и сделал
Anonymous
редаксом меняю стейт и скармливаю его навигатору, тот отображает то, что нужно
Sergey
редаксом меняю стейт и скармливаю его навигатору, тот отображает то, что нужно
А можно пример кода с этим. Гугл что-то невнятное выдаёт.
Alexander
https://github.com/jlyman/RN-NavigationExperimental-Redux-Example
Anonymous
Если нужно начальное состояние приложение считать с AsyncStorage в редакс create store, то на каком этапе это лучше сделать?
Anonymous
Еще вопрос как вы используете KEY для этого стореджа? В примерах всовывают под одним ключем тупо все состояние без разбивки на разные ключи.
Anonymous
Посоветуете ли использовать врапер над асинкстореджем?
Andrey
Привет, а как можно разрешить выделение текста, детекта выделения, и изменения пользовательского выделения для android черезе несколько элементов, например <View><Text>test1</Text> <Text>test2</Text></View> Пользователь должен уметь выделить "test1 tes", а в коде я должен расширить его выделение до "test1 test2"?
Andrey
ну пользователь делает длинный тап на тексте и появляется стандартная выделялка
Andrey
Я нашел только вот эту фичу https://github.com/facebook/react-native/commit/6cd712713b1673f13510bc127ac970648f9b5eb3
Andrey
но она выделяет только внутри одного блок
Anonymous
Как данные с asyncStorage засунуть в initialState redux?
Alexander
Инициализируй приложение, когда получил данные, например (и соот-но там же создавай экземпляр стора)
Alexander
Я так не делал, но вроде не вижу причин почему это не сработает
Mitya
Спасибо посмотрю)
Mitya
посмотри эту штуку https://crosswalk-project.org/ оно вроде как Хромиум пакует в Апликуху
Anonymous
Т.е. цеплять провайдер редакса не в корне, а на уровень глубже?
Alexander
Сек
Anonymous
Если цеплять в корне, то есть затык в асинхронности считывания стореджа и нельзя объявить приложение в callback
Anonymous
AppRegistry.registerComponent(‘app’, () => personalProvider); — вот это не ложится в callback
Alexander
А, ну тогда жопа )
Alexander
Можно диспатчить экшен типа APP_INIT
Anonymous
До этого экшина что показывать то?
Anonymous
Экран логинизации или профиля?
Anonymous
Пока не считаю стор — хз кто пришел
Alexander
Загрузку, например
Alexander
https://github.com/rt2zz/redux-persist смотрел?
Anonymous
Я бы сплеш скрин продлил, но как?
Anonymous
в выдаче видел, но не въезжаю в его суть
Anonymous
не вижу как он решает мою проблему
Alexander
У тебя проблема восстановить залогиненого юзера?
Anonymous
да
Alexander
У меня пока неизвестно есть юзер в сторадже или нет показывается загрузчик
Anonymous
в сторе данные есть, но через асинхронный лоад мигает экраг логина пока стор не подгрузиться
Andrey
в сторе данные есть, но через асинхронный лоад мигает экраг логина пока стор не подгрузиться
Я показываю просто спиннер, пока грузится из стораджа, а потом уже в редьсере на app_init проставляю в стор какой экран грузить, диспатчу ивент смены экрана
Anonymous
спасибо, пришлось сделать так же, но выглядит корявенько
Anonymous
Как вы закладываете высоту statusBar?
Anonymous
Т.е. флексы валят с самого верха, а простым отсутпом мне кажется делать неправильно, так как высота может быть разная
Alexander
гайз, у меня нубический вопрос. Изучаю реакт в кач-ве альтернативы обычным вариантам, но он сразу начал меня ошибками в консоль пугать, что-то вроде Jul 14 10:16:24 user assertiond[91970] <Error>: assertion failed: 15F34 13E230: assertiond + 15801 [3C808658-78EC-3950-A264-79A64E0E463B]: 0x1 Jul 14 10:16:24 user Unknown[91970] <Error>: это лечится?
Alexander
самое простое приложение вроде init SimpleApp выдает при запуске и при каждом тапе в эмуле такие ошибки
Alexander
ЧЯДНТ
Satoshi
ты лучше код показывай который эти ошибки дает
Alexander
просто создаешь приложение $ react-native init SimpleApp $ cd SimpleApp $ react-native run-ios и получаешь assertion errors
Alexander
не исключаю что ошибки связаны с особенностями среды, попробовал на двух разных компах — одинаково
Alexander
или может быть в этом нет ничего страшного и с этим все живут при дебаге, а на продакшне оно само лечится?
Alexander
спасибо, попробую
Anonymous
Парни, тут все на тачабл создают функции <TouchableHighlight onPress={() => this.setState({ toggled: !this.state.toggled })}> <Text>Toggle</Text> </TouchableHighlight> на сколько это нормально для нейтива. Для реакта это bad practice, а что здесь?
Alexander
почему bad practice?
Anonymous
при каждом рендере создается функция
Sergey
при каждом рендере создается функция
Так вынесете в метод класса. Здесь в основном хэллоуворлды и сниппеты с rnplay мелькают, в таких примерах никто заморачиваться не будет.
Anonymous
тогда второй вопрос, как передавать дополнительные аргументы?
Anonymous
в реакте взял от ивента дом элемент и считал у него все, что нужно
Sergey
тогда второй вопрос, как передавать дополнительные аргументы?
Какие дополнительные аргументы, можете привести пример? В примере выше дополнительных аргументов нет.
Anonymous
<TouchableHighlight onPress={() => this._handleItemTouch(currentIndex)}> <Text>{itemText}</Text> </TouchableHighlight>
Roman
здесь есть пример как это решается https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md
Anonymous
не вижу как оно там у них решается в контексте нейтива
Anonymous
можно затулить итерацию еще в один компонент
Roman
...
Roman
<ChildItem currIndex={index} onPress={this.handlePress} /> и в самом чайлд итеме: itemPress() { this.props.onPress(currIndex); } render() { return <TouchableHighlight onPress={this.itemPress}> <Text>{itemText}</Text> </TouchableHighlight>
Anonymous
т.е. взять один из аттрибутов
Roman
открой дебагер / используй console.log и попробуй самостоятельно ответить на свой вопрос
Anonymous
та там такой срач в месте где должен быть event что глаза поломать можно
Roman
я бы именно так и поступил на твоем месте
Anonymous
bind = создание функции
Александр
Ну ок
Anonymous
буду делать как проще, потом буду оптимизировать по надобности, всем спасибо