Maxim 📱 D
детокс тесты так "detox:android": "detox build -c android.emu.debug && detox test -c android.emu.debug», например
Alexandr
детокс тесты складываешь в отдельную папку, запускаешь jest тесты так "test": "node ./node_modules/jest/bin/jest.js ./js»,
Спасибо, ага, прочитал уже. Просто надо указать папку где они лежат спасибо
Aynur
а зачем? если это всё равно та же IDEA, только с примочками
Aynur
да ещё и бесплатно😌
Anonymous
Как ты будешь в РН использовать те примочки
Kto?
Помянем...
Maxim 📱 D
F
Vetaly
привет, не могли бы вы помочь мне понять как тут типизация работает export interface NavigationFunctionComponent< Props extends NavigationScreenProps = NavigationScreenProps, NavigationParams = {}, NavigationOptions = {} > extends FunctionComponent<Props> { navigationOptions?: ( screenProps: NavigationScreenProps<NavigationParams, NavigationOptions> ) => NavigationOptions; } ?
Gena
Всё будет хуже... это ещё c++ не возникло потребности дебажить.
Vadym
Подскажите плз по хуках, есть фаншинал компонент в котором есть такая логика const [cardsToReveal, setCardsToReveal] = React.useState(rewards.length); const cardRevealed = () => { setCardsToReveal(cardsToReveal - 1); }; React.useEffect(() => { console.log(cardsToReveal); if (cardsToReveal === 0) { if (allRevealedCallback) { allRevealedCallback(); } } }, [cardsToReveal]); Если одновремено приходит два ивента cardRevealed() то засчитывается только один.
Vadym
переписать на клас или как то можно обойти проблему ?
Gena
Да, но это общая проблема remote debug, я помню ещё, как xcode падал несколько лет назад на вполне безобидном коде в дебаге... Сам стараюсь больше на тесты и трейс полагаться. Впрочем последние мои дебаг сессии были вполне успешны, но сводились в основном к: встал в нужной точке, почитал стек трейс и переменные в разных фреймах и остановил программу, т.е. без попыток продолжения
Alex
Всем привет, кто сталкивался с тем что redux-persist сохраняет данных после переустановки приложения? Кто знает как отловить удаление и почистить данные?
Vadym
да
Vadym
у меня рендеряться карточки, по нажатию ивент cardRevealed - и когда быстро нажму на две карточки то счетчик только на 1 уменьшаеться
Alex
Не может быть. Какая платформа, как переустановка производилась?
Тестил на ios эмкляторе. Удалял приложение, ставил заново через react-native run-ios. После поднятия стора, все данные из предыдущих состояний были там.
Alex
На реальном устр-ве пока не приходилось тестить
Gena
На ios всё должно удаляться, чтоб сохранялось, надо такие усилия приложить, что вы бы знали об этом.
Gena
На ios всё должно удаляться, чтоб сохранялось, надо такие усилия приложить, что вы бы знали об этом.
Но можно поискать grep'ом конечно значение известного ключа после удаления, все данные симулятора на локальном диске
Alex
Попробую на реальном повторить, скорее всего это и правда косяки эмулятора. Спасибо
Vadym
ну вроди так и есть: const RewardCards = ({rewards, allRevealedCallback}) => { const [cardsToReveal, setCardsToReveal] = React.useState(rewards.length); const cardRevealed = () => { setCardsToReveal(cardsToReveal - 1); }; React.useEffect(() => { if (cardsToReveal === 0) { if (allRevealedCallback) { allRevealedCallback(); } } }, [cardsToReveal]); cards = rewards.map(... () => <Card revealedCallback={cardRevealed}/>); return ( <View>{cards}</View> ) }
Sergey
Вариант с вырезанием лишнего экрана из стека мне нравится, тем более у меня 1 лишний. Как это можно реализовать?)
Нужно переопределить функцию getStateForAction, например вот так const AppContainer = createAppContainer(TopLevelNavigator); const defaultGetStateForAction = AppContainer.router.getStateForAction; AppContainer.router.getStateForAction = (action, state) => { if (state.routes && state.routes[state.index].params && state.routes[state.index].params.secondScreen) { const newState = { ...state, index: 1, routes: [state.routes[0], state.routes[state.index]], }; return defaultGetStateForAction(action, newState); } return defaultGetStateForAction(action, state); }; В данном случае при переходе на экран необходимо в параметры передать secondScreen: true, тогда этот экран станет вторым (и последним) в стэке. По аналогии можно и твою задачу решить
Khorark
На ios всё должно удаляться, чтоб сохранялось, надо такие усилия приложить, что вы бы знали об этом.
На самом деле особых усилий не нужно. У меня была такая же проблема
Khorark
Долго разбирался из-за чего, а в итоге оказалось из-за того, что я подменил стандартное хранилище на keychain. А от туда данные не удаляются по умолчанию
Khorark
Юзал sensetive storage
Gena
Долго разбирался из-за чего, а в итоге оказалось из-за того, что я подменил стандартное хранилище на keychain. А от туда данные не удаляются по умолчанию
Нут в моем представлении чтоб заюзать кейчейн, надо что-то осознанное сделать. Но да, если теперь там это легко конфигурируется, то можно и не заметить )
Gena
А оно случайно не синхронизируется ещё в облако? Тогда у вас вообще один стейт в двух экземплярах приложения на разных девайсах будет оказываться )
Khorark
Но это было бы странно, так как в keychain токен хранится
Gena
Но это было бы странно, так как в keychain токен хранится
В кейчейне прежде всего хранятся пароли и ключи... которые с точки зрения пользователя вполне логично синхронизировать между его девайсами. А токен вы туда сами положили )
Gena
Ну на мой взгляд это чувствительная инфа) А вы где токен храните?
в файле )) (но про кейчейн я пока просто предполагаю, это стоит проверить в оф доках)
Gena
Ну вот (https://developer.apple.com/documentation/security/keychain_services/keychains): In iOS, apps have access to a single keychain (which logically encompasses the iCloud keychain). This keychain is automatically unlocked when the user unlocks the device and then locked when the device is locked. An app can access only its own keychain items, or those shared with a group to which the app belongs. It can't manage the keychain container itself. Тут как бы написано, что да, keychain синхронизируется если только пользователь это настроил.
Gena
Имеется ввиду, что синхронизация вытекает из фразы "which logically encompasses the iCloud keychain"
Khorark
Любопытно. Но вроде пока инцидентов не было
Alexandr
Вопрос не совсем про реакт нейтив, но все же. Раньше кодил нативно под андроид, перешел почти, как год на реакт-нейтив, и хотел спросить совета, кто бы как развивался дальше, можно учить дальше мобильные платформы, хотя бы на примитивном уровне свифт или флаттер или пойти путем react.js и node.js. Хотя и понимаю, что все вместе знать на хорошем уровне очень сложно, так как даже андроид стал забывать. Кто что думает по этому поводу, ну и вопрос финансовой составлющей тоже важен, так как зачастую будут платить за знание одной платформы?
Dmitry
а есть литерал типа \n чтобы текст сделать жирным ?
Anonymous
да ещё и бесплатно😌
идеа се тоже фри
Alf
кто то знает в чём может быть проблема? пытаюсь создать проект с помошью react-native-cli но вылазит ошибка react-native: command not found
Alf
уже гуглил, и пытался исправить сам, всё ставил по инстркции
Alexander
1) ставить нужно глобально 2) если 1 пункт ок, то проблема с глобальным контекстом. Скорей всего в переменных окружения не видно глобальных модулей
Without
Without
Всем привет, реализую tab bar и сталкиваюсь вот с такой ошибкой:
Without
Сорри, что не скрин, долго перекидывать
RedTeapot
Мне помогла ручная установка react-native-gesture-handler. Правда, хз, является ли это правильным решением
Nail
это нормально, в документации часто пишут вручную его ставить
Nail
по-умолчанию он не нужен зачастую, тянуть его через зависимости смысла нет
Without
Так, ошибка ушла, но expo пишет, что что-то пошло не так. Делаю всё по гайду с Ютуба, весь код оттуда же
Without
В гайде хз, а у меня последняя
Roman
В гайде хз, а у меня последняя
Не доверяй Ютубу, всегда читай доку 👌
Kto?
В гайде хз, а у меня последняя
Импортируй из экспо
Kto?
А не из отдельного модуля
A
коллеги, как вы контролируете размер шрифтов в зависимости от разрешения и размера девайса?
A
пока что нагуглил только https://github.com/vitalets/react-native-extended-stylesheet может есть альтернативные варианты, без библиотек?
Vit
Сделай свой <Text и не парься
A
а по какой формуле ты считаешь?
Vit
Лично я ни по какой) за меня дизайнер все считает)
A
ладно, сформулирую по другому. есть страница которая всегда должна занимать всю вью телефона, на маленьких телефонах не должны появляться скролы
A
то есть все величины должны быть относительными. с размерами блоков понятно, с размером шрифтов - не очень
Daniil
сделать свой <text>, выделить границы для дименшенсов телефона и в зависимости от них выкидывать фонтсайз
Daniil
mb
Irakliy
можно ещё в отдельный файл вынести, где будешь делать проверку на ширину экрана устройства, и импортировать оттуда
Roman
Как заменить такую строку для native? this.email = new URLSearchParams(this.props.location.search).get('email')
Олег
Всем привет, есть ли какой путь как инициализировать глобальную переменную с темами перед стартом апки.Вот код стили глобальная переменная инациализуеться после начального экрана.Експортирую даное чудо в StackNavigator
Pablo
Всем привет! Если есть работа для фриланса, ее тоже оформлять как вакансия ?
Alexey
Привет дорогие, посоветуйте доку или решение готовое по работе с flatlist, я пишу чат и мне надо его к закрепленному сообщению промотать а оно далеко за пределами диапазона отрисовки, хорош бы initial scroll to index но не работает без калькулятора высоты а у меня динамические высоты в сообщениях так как там и текст с разметкой markdown и картинки и видео :((
Alexey
Дельно
Alexey
Есть примеры готовые?
Олег
Тем несколько)Разве fs юзать и перезаписать каждий раз но что оно так себе решение