Sergey
Спасибо
Sergey
Спасибо
Степан
всем привет, подскажите мб кто сталкивался, в TextInput если указать secureTextEntry для паролей, при повторном фокусе на инпут - очищается при изменении данных. Как сделать чтобы не было авто отчистки?
Dmitry
проблема решилась выносом всей логики в mobx
@gblack9 может у тебя будут соображения на этот счет? Вынес всю локигу, которая раньше была в state внутрь модели mobx и баг пропал. Подозреваю, что это из-за транзакций в mobx, но не могу сообразить, в чем конкретно фича
Олег
Всем привет есть ли какой способ вернуть объект а не Промис?
Dmitry
Всем привет есть ли какой способ вернуть объект а не Промис?
зачем делать так, если можно делать так - const currentTheme = await AsyncStorage.getItem('currentTheme')
Степан
по дефолту ее нет
если поставить свойство secureTextEntry, то есть
Maxim 📱 D
если поставить свойство secureTextEntry, то есть
эм, специально на экспо затестил, нет https://snack.expo.io/Sk8BzS2zB
Maxim 📱 D
*на андроиде
Олег
зачем делать так, если можно делать так - const currentTheme = await AsyncStorage.getItem('currentTheme')
await можно использовать только в асинхронних функциях , + проверка установлена ли тема если нет использовать тему по умолчанию
Vitaly
Всем привет есть ли какой способ вернуть объект а не Промис?
ты делаешь await и then, какой в этом смысл ? await возвращает резултать промиса, то есть велью JSON.stringify - синхронная штука, ей await не нужен и вообще как-то слишком много awaitов
Олег
ты делаешь await и then, какой в этом смысл ? await возвращает резултать промиса, то есть велью JSON.stringify - синхронная штука, ей await не нужен и вообще как-то слишком много awaitов
await возвращает value но сама асинхронная функция возвращает промис мне нужен простой объект чтобы применить в стилях
Anonymous
Всем привет, завтра буду отправлять на проверку первую версию приложения с auto-renewable подпиской. Валидацию receipt провожу на клиенте, соответственно devMode указываю там же. Вопрос: review team использует же sandbox аккаунты? Как поступить в данной ситуации, после успешного прохождения проверки с помощью OTA поменять девмод на продакшн? Или же можно отправлять версию с валидацией не для sandbox? Заранее спасибо за ответ 🙏
Dmitry
await возвращает value но сама асинхронная функция возвращает промис мне нужен простой объект чтобы применить в стилях
ты путаешься в показаниях) если используется await, то then не нужен. Я думаю, что тебе нужно на старте приложения загружать это все и класть в какой-то стор (redux например) и уже с ним работать
Dmitry
ну это даже не обсуждается) но направить все равно нужно
Dmitry
что-то слишком токсично...
GrafMine
привет всем, была ли у кого проблема со сторибуком что он просто показывал белый екран и не было даже возможности выбрать какойто сторис?
Denis
Всем привет! А FlatList ререндерится, если новые пропсы приходят в родительском компоненте?
Denis
Проблема в том, что в дочерний компонент пропсы пришли, но вот FlatList их не отображает. Если вместо FlatListа делаю Text, то все норм
Никита
Denis
extraData надо смотреть в доке. Там все на PureComponent сделано, поэтому не перерендерится
у меня в родительском компоненте, по setTimeout вызывается setLiveEvent(false). liveEvent передаюется в дочерний компонент, а в самом FlatList проверка: liveEvent ? {color: blue} : {color:red}. То есть должен поменяться цвет элементов. Что в таком случае задавать в extraData?
Никита
liveEvent в state лежит?
Denis
да
Denis
я передаю в дочерний компонент true или false, деструктурирую и делаю проверку
Andrey
Надеюсь, никто не будет возражать против вопроса по JS? const a = 1: const b = 1: console.log(a === b === 1); // false не могу понять почему. Если это некорректное выражение, то должна быть ошибка, но ошибки нет, значит все корректно.
Denis
liveEvent в state лежит?
разобарлся, передал liveEvent в extraData, заработало. Но для меня это загадка конечно, почему все-таки FlatList не перерендерился, если пришли пропсы?
Никита
разобарлся, передал liveEvent в extraData, заработало. Но для меня это загадка конечно, почему все-таки FlatList не перерендерился, если пришли пропсы?
PureComponent. Чисто react. Если не изменились props или state то компонент не будет перерендериться. Самая примитивная реализация shouldComponentUpdate. Можно почитать на оф сайте react
Andrey
A === b => true, далее true === 1 => false
блин, это было просто :)
Мағжан
Господа программисты! Подскажите пожалуйста. При использовании React Navigation в приложении, нужно ли удалять те страницы которые уже не используются. К примеру есть страница А, B, C. Между страницами я перехожу через this.props.navigation.push() И вот У меня с страницы А можно перейти на B. с страницы B на С, и с страницы С на А. Такой круговорот. Если я сделаю 2 кругов сколько страниц у меня создадутся? И вообще правильно ли я перехожу между страницами используя push. (Название функции меня пугает просто)
Nick
все _предыдущие_ экраны в стеке висят в памяти, пока не будет сделан navigation.back()
Nick
push() всегда порождает рендер нового экрана в отличие от navigate()
Nick
хотя в случае такого цикличного перехода есть вероятность, что класс экрана будет висеть в стеке как синглтон, это надо практическим путем выяснять. не помню, чтоьбы в документации было описно такое
Мағжан
У меня на странице А список новостей, Страница В, С это фильтры. На странице В выбираю Регион, а на странице С город. и вот при выборе города мне надо попасть на страницу А но уже готовым фильтром...
Мағжан
А он параметры умеет передавать?
Мағжан
Шас сам спрошу у гугла, в любом случае спасибо!)))
Nick
А он параметры умеет передавать?
можно в стейт класть, в тот же редакс или любой другой стейт менеджер
Nick
pop/popToTop параметры не умеют
Nick
там единственный параметр – количество экранов, на которое надо вернуться
Мағжан
Ясно, спасибо
Serhii
Привет, новичок в реакте, перехожу с xamarin, может кто посоветовать что стоит почитать и с чего начинать?
Khorark
Кто как организовывал задержку для отправки push? Где было решение - на сервере или клиенте? К примеру, нужно не отправлять push с 00:00 до 09:00. Поделитесь информацией пожалуйста
Narek
привет всем
Narek
кто использует библиотеку react-native-animatable ?
Narek
хотел сделать с помощью него набор текста, на ios все ок работает, на android текст показывает без анимации
Narek
import React, { Component } from 'react'; import { Text, TouchableOpacity } from 'react-native'; import * as Animatable from 'react-native-animatable'; export default class TypingText extends Component { state = { readyText: {}, } componentWillMount() { const { text } = this.props; const readyText = {}; let index = 0; for (let i = 0; i < text.length; i++) { if (i % 3 === 0) { index++; readyText[index] = this.props.text.slice(index * 3 - 3, (index * 3)); } } this.setState({ readyText }); } componentDidMount() { const { readyText } = this.state; const { typingAnimationDuration } = this.props; const delay = Object.keys(readyText).length * typingAnimationDuration; setTimeout(() => { this.props.setShowAll(); }, delay); } render() { const { readyText } = this.state; const { showAll, text, typingAnimationDuration } = this.props; return ( <TouchableOpacity activeOpacity={1} onPress={this.props.setShowAll} style={{ flex: 1 }}> <Text style={{ color: this.props.color, fontSize: this.props.textSize, textAlign: 'center', lineHeight: 21 }}> { (showAll) ? <Text>{text}</Text> : <Text> { Object.keys(readyText).map((item, index) => <Animatable.Text key={`animatedText${index}${readyText[item]}${text}`} duration={100} animation={'fadeIn'} delay={typingAnimationDuration * index} useNativeDriver={false} >{readyText[item]}</Animatable.Text>) } </Text> } </Text> </TouchableOpacity> ); } }
Narek
(извините за портянку))
Narek
может андроид не вывозит fps?
Narek
useNativeDriver: true
не помогает)
Khorark
componentWillMount deprecated
Dmitry
Меня смущает то, что внутри mobx тот же самый код, без тайм-аутов работает абсолютно нормально. Получается проблема именно в том, как отрабатывает setState
Gena
Меня смущает то, что внутри mobx тот же самый код, без тайм-аутов работает абсолютно нормально. Получается проблема именно в том, как отрабатывает setState
Не обязательно это проблема, возможно setState отрабатывает быстрее, а mobx-react с задержкой в несколько микротиков. Тут ещё недавно mobx-react колбасило, они там радостно поддержку хуков впилили, да так, что испортили все нормальные компоненты, потом откатывали, так что и от версии может зависеть и от кода, он там совсем не такой простой.
Dmitry
ну здесь, не то что задержка, а просто неадекватно поведение. 1. каждый последовательный pull-to-request отрабатывает корректно 2. каждый refreshing устанавливаемый через setState срабатывает несколько раз, после чего индикатор перестает появляться и, если потянуть список вниз, индикатор показывается с зависшем состоянии. 3. если запустить refreshing и сделать pull-to-request до установки setState({ refreshing: true }), то поведение будет, как в пунке 2. причем setState({ refreshing: false }) игнорируется, но если его обернуть в setTimeout(() => {}, 500) индикатор сбросится, но с дерганием. Я вообще первый раз с таким сталкиваюсь и жалко, что не выделяют время на детальное изучение…
Dmitry
во всяком случае, можно добавить +1 в копилку mobx, так как всю логику я переложил на модель минут за 15 =)
Gena
ну здесь, не то что задержка, а просто неадекватно поведение. 1. каждый последовательный pull-to-request отрабатывает корректно 2. каждый refreshing устанавливаемый через setState срабатывает несколько раз, после чего индикатор перестает появляться и, если потянуть список вниз, индикатор показывается с зависшем состоянии. 3. если запустить refreshing и сделать pull-to-request до установки setState({ refreshing: true }), то поведение будет, как в пунке 2. причем setState({ refreshing: false }) игнорируется, но если его обернуть в setTimeout(() => {}, 500) индикатор сбросится, но с дерганием. Я вообще первый раз с таким сталкиваюсь и жалко, что не выделяют время на детальное изучение…
Если выделят, то копать надо в реализацию скролла... Не то чтоб баг именно здесь, но вот подумай, вот это выполняется в ui треде, а установка св-ва isRefreshing инициируется в js: https://github.com/facebook/react-native/blob/0.59-stable/React/Views/ScrollView/RCTScrollView.m#L526 Да тут что угодно может происходить. При этом, вообще схема очень стремная, т.к. как бы у RCTRefreshControl есть свой view manager, но им ещё управляет RCTScrollView - очень опасно...
Gena
А учитывая, что флаг там бинарный (isRefreshing), а включение/выключение анимированное, да ещё с жестами...
Dmitry
наверное это хорошо)
Gena
Гы. Надеюсь, послужит противовесом разбушевавшемуся Абрамову... Но вообще, плохо, что фейсбук выдергивает разработчиков. Они после этого начинают решать проблемы фейсбука, а не проблемы сообщества или какие-то свои независимые.
Dmitry
я тоже надеюсь, что этот переход не скажется на судьбе mobx
Dmitry
я даже думаю, что скорее всего так и есть
Dmitry
а тут просто setState проскакивает, до завершения анимации и игнорится
Gena
Я тоже надеюсь на лучшее )