Агата Рудько
- Пишем сразу под несколько платформ
- Пишем на JS, а под капотом работает нативный код
- Разрабатываем интерфейс с помощью React
import React from 'react';
import { View, Text } from 'react-native';
function App() {
return (
<View>
<Text>Hello React Native!</Text>
</View>
);
}View, Text:
View aka div, но стили пробрасываем в style, а не в className)
Любой текст (буковки) может быть только внутри Text.
Button, TouchableOpacity, TouchableHighlight:
Button - это нативная кнопка 🤔🤔🤔.
TouchableOpacity - это штука на которую можно нажать, и она поменяет свой opacity 🤔🤔🤔.
TouchableHighlight - это штука на которую можно нажать, и она поменяет цвет фона 🤔🤔🤔.
Нажатия обрабатываются через onPress (тк. тыкаем пальцем ☝️).
Нажатия могут быть обработаны не на всех компонентах. На View нажать нельзя! Можно нажать на Button, Touchable компоненты, Text и другие.
StyleSheet
import { StyleSheet } from 'react-native';
export default StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
title: {
fontSize: 36,
marginBottom: 5,
},
itemText: {
fontSize: 18,
color: 'rgba(0, 0, 0, 0.5)',
},
});
Размещать элементы на экране можно только с помощью FlexBox. Это единственная опция, которая есть в React Native.
Другими словами: display: flex всегда.
Padding, margin, position и остальное счастье работает нормально.
ScrollView:
По умолчанию прокрутки нет нигде. Если хотите её добавить - нужно обернуть все в ScrollView. Он в свою очередь пригоден для простых конструкций. Если нужен большой длинный список, то нужно использовать FlatList.
SafeAreaView:
На вебе у нас есть страницы. В приложении - это экраны.
Переходить по экранам нам позволяют навигаторы.
function Home() {
return (
<Tab.Navigator>
<Tab.Screen name="Feed" component={Feed} />
<Tab.Screen name="Messages" component={Messages} />
</Tab.Navigator>
);
}
function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={Home} />
<Stack.Screen name="Profile" component={Profile} />
<Stack.Screen name="Settings" component={Settings} />
</Stack.Navigator>
</NavigationContainer>
);
}