Vladyslav 🇺🇦
AXZ
Андрей
Что делать если данные со стора получаю позже чем происходит рендер
Akylbek
Андрей
Если данные с пропсов пустые то крутить лоадер а иначе показать шаблон?
Akylbek
Когда запрос идет показывается лоадер, когда запрос прошел показываешь контент
Fabiano
Good morning has anyone already notified by location? Hi do you have any idea how to do it?
Maksym
Господа, всех приветствую, два дня назад начал работать с React Native
Прохожу курс на курсере, реализовал список элем используя FlatList, с этим вроде разобрался, начал реализацию меню, доустановил либу react-navigation@2.0.1, юзаю ф-цию createStackNavigator для создания меню
все сбилдилось, но не отображаеться моя Menu компонента
const MenuNavigator = createStackNavigator({
Menu: {screen: Menu},
DishDetail: {screen: DishDetail}
}, {
initialRouteName: 'Menu',
navigationOptions: {
headerStyle: {
backgroundColor: '#512DA8'
},
headerTintColor: '#fff',
headerTitleStyle: {
color: '#fff'
}
}
});
export class Menu extends React.Component {
constructor(props) {
super(props);
this.state = {
dishes: DISHES
}
}
static navigationOptions = {
title: 'Menu'
};
render() {
const {navigate} = this.props.navigation;
const renderMenuItem = ({item, index}) => {
return (
<ListItem
key={index}
title={item.name}
subtitle={item.description}
hideChevron={true}
leftAvatar={{ source: require('./images/uthappizza.png') }}
onPress={() => navigate('DishDetail', {dishId: item.id})}
/>
)
};
return (
<FlatList
data={this.props.dishes}
renderItem={renderMenuItem}
keyExtractor={item => item.id.toString()}
/>
)
}
}
Maksym
dishes - это массив объектов
Тот самый Тимофей
dishes - это массив объектов
Для начала заменить <FlatList> на <Text>Text Here</Text> и посмотреть, отобразится ли.
Maksym
Maksym
по этому в чат и написал, мб я забыл указать какой-то параметр
Тот самый Тимофей
С виду правильно вроде. Логать data надо и поменять renderItem тоже на тестовый тег.
Maksym
Vladyslav 🇺🇦
Спасибо👍
Artem
!report. Трасса чатом ниже
Timur 👨💻
Всем привет, юзаю react navigation 5, подскажите плиз как сделать так, чтобы каждый раз при фокусе на экран (через табы) происходил инит функции (но с проверкой, что если юзер уже был на этом экране, то вызывать функцию повторно не нужно, пытался сделать
const [isPageFocused, setIsPageFocused] = useState(false)
useEffect(() => {
const unsubscribe = navigation.addListener("focus", () => {
setIsSignedIn(state.token != null)
if (!isPageFocused) {
setIsPageFocused(true)
getTransactions()
}
})
return unsubscribe
}, [navigation])
но каждый раз isPageFocused = false
Михаил
а где стоит хранить токен? В AsyncStorage?
Anonymous
Всем привет, юзаю react navigation 5, подскажите плиз как сделать так, чтобы каждый раз при фокусе на экран (через табы) происходил инит функции (но с проверкой, что если юзер уже был на этом экране, то вызывать функцию повторно не нужно, пытался сделать
const [isPageFocused, setIsPageFocused] = useState(false)
useEffect(() => {
const unsubscribe = navigation.addListener("focus", () => {
setIsSignedIn(state.token != null)
if (!isPageFocused) {
setIsPageFocused(true)
getTransactions()
}
})
return unsubscribe
}, [navigation])
но каждый раз isPageFocused = false
// Events firing when user leaves the screen or comes back.
useFocusEffect(
React.useCallback(() => {
// When the screen is focused:
// - Do something here.
return (): void => {
// When the screen with is unfocused:
// - Pause video.
// - Do something here.
};
}, [])
);
Anonymous
Timur 👨💻
E.
Подскажите если берешь проект себе качаешь и он не запускаться, через npx react-native run-android
надо сделать что то с yarn? я просто этот момент не понял
Михаил
а что выбирать в Keychain.ACCESSIBLE?Не понял про эти разные варианты безопасности
Михаил
ничего из этого: [{ accessControl, accessible, accessGroup, service, securityLevel }]) не указываешь, когда делаешь setGenericPassword?
Михаил
спасибо
Эдуард
Мне надо сделать хранилище книг.
Я прошу у него обложку книги
. Неизвестно есть она на устройстве или нет.
Хранилище мне выдаёт мне промис
в котором или "ищет путь до кеша" или "скачивает и возвращает ссылку"
Верно?
Mikhail
Да
Mikhail
Да
sh’
Друзья как это подправить ?
На ios все отлично работает
На андроиде подвисает и выдаёт ошибку
sh’
N
Подскажите статью или либу для Bottom sheet чтоб можно было свайпом открывать снизу вверх и закрывать
Alexsandr
dan
Anonymous
sh’
Это предупреждение
Но у меня на ios скроллинг норм работает
А на андроиде подглючивает
sh’
Не скролит
Эдуард
Я что-то запутался...
Я запрашиваю обложку.
Мне приходит обложка и я обновляю стейт. И снова запрашиваю обложку что-ли?
(Метод запроса обложки вызывается трижды)
Эдуард
Aleksandr
ты не там его вызываешь
Aleksandr
в хук useEffect засунь и почитай про зависимости, тебе надо единожды при маунте - значит второй аргумент с зависимостями пустой будет
Aleksandr
и в нем свой код запусти
Aleksandr
useEffect(() => {
BooksStorage.getBookCover(){}
}, [])
Эдуард
А есть вообще смысл писать функциональный компонент с хуками? Или лучше сделать обычный?
Daniil
Если так писать - нет смысла
Aleksandr
Aleksandr
ну вообще можно и свои хуки писать и выносить в них логику как в сервисы
Эдуард
Илья
Вопрос по выше обсуждаемой теме. Если миксовать?
Илья
Большие компоненты сложные делать классовыми, а какие-то маленькие функциональные на хуках
Илья
Это будет считаться нормальным подходом? Или лучше все писать однотипно? Все классами или все функциями?
Илья
Подскажите, что не так? Почему AsyncStorage не хранит данные?
Vitaliy
Vitaliy
Филипп
Всем привет, ребят подскажите как с этим бороться, в режиме разработки к примеру сраница авторизации сплющевается, после билда все нормально. А вот чат к примеру тоже сплющевается, а после билда его перекрывает клавиатура. Вообще не понятно как keyboard view работает. Behavior стоит в значении padding.
Филипп
Филипп
Филипп
Илья
да
@ponomarevv а подскажи еще такой момент, что-то не могу сообразить как при setItem просто добавлять еще одну запись, а не перезаписывать имеющияся данные. А то у меня получается при каждой отправке события AsyncStorage.setItem перезаписывается текущий Storage
Alexandr
Alexandr
KeyboardVerticalOffset вроде называется параметр
Филипп
Филипп
Dmitry
Добрый день, занимаюсь установкой Android Studio, застрял на пункте, где нужно прописать bin в переменную path (я пока еще на винде).
В документации (https://reactnative.dev/docs/environment-setup) сказано, что это C:\Android\tools\bin\platform-tools дефолтное значение, куда скачивается SDK-ашка, хотя проискав все файлы в диске, я ничего похожего не нашел.
find /c -name 'Android\tools\bin'
Может кто-нибудь дать подсказку, может, я что-то делаю не так?
Dmitry
То есть, добрая ночь)
Филипп
добавил это offset, но не было никаких изменений. Сейчас пробую пакет KeyboardAwareScrollView
N
Подскажите плиз, всатвил react-native-maps, все ок, но когда выплывает модалка по верх карты то по ней нельзя клацать и свайпать (в это время свайпается карта насквозь модалку)
Anonymous
Филипп
Владимир
Ребята кто спец. по английскому правильно ли я написал: Do you need a detailed report?(Вам нужен подробный отчёт?)
Artem
Artem
Реакт ведь можно юзать не под TS? а то у меня проекты создаются с App.TSX, а руками менять каждый раз конфиги и файл не удобно
Anonymous
Да, там где чат
Попробуйте высоту контейнера через minHeight. Мне это помогло. Даже не использовал keyboardAvoidingView
Gena
давай по шагам:
в доке https://reactnative.dev/docs/asyncstorage.html#setitem
написано "Sets the value for a key"
ни про какие "добавления записей" там не говорится. просто устанавливает значение для ключа (любое которое укажешь).
что в итоге хочешь получить? несколько значений на этом ключе?
рекомендую очень внимательно к этому вопросу относиться при проектировании, на андроиде у asyncstorage (там sqlite под капотом) ограничение 6 мб на хранилище. но если это ограничение ещё можно просто побороть настройками модуля, то ограничение на длину записи (одной строки) так просто не поменяешь
@gblack9 кстати, судя по доке там 1 000 000 000 знаков по умолчанию
https://www.sqlite.org/limits.html
если конечно в нативном модуле не поменяли настройки
Вот именне "если при компиляции не поменяли", и там в другом проблема, не в строке, а в размере буфера курсора. Так вот, в штатной поставке и sqlite и биндинг в jni идут системные (наверное тоже можно свой вставить, но тут уж реально проще прямо в fs писать), а системные, это значит что от вендора и версии андроид зависят...