React native, oczami React Developera
Nowe projekty, stawiają przed nami nowe wyzwania – i tak pojawiła się opcja, żebym jako frontend developer, napisał aplikację mobilną. W czym? No skoro mam doświadczenie w React, to najbliższy mi będzie React Native. Więc wypowiem się dzisiaj na temat nowej zabawki, która wpadła mi w ręce.
Pierwsze kroki
Pierwsze bardzo pozytywne zaskoczenie to sam system Expo Go z którym React Native cudownie współpracuje. Po utworzeniu pierwszego, hello-worlda i zbudowaniu aplikacji, dostałem kod QR, z ciekawości zainstalowałem aplikacje Expo Go na smartfonie i kilka minut później, moje zmiany były widoczne jednocześnie na smartfonie i przeglądarce.
Oprócz samych narzędzi pobocznych, pierwsze co rzuciło się w oczy to budowa samego projektu, na potrzeby artykułu, posłużę się przykładem ze strony https://snack.expo.dev/.
import { Text, SafeAreaView, StyleSheet } from 'react-native';
import { Card } from 'react-native-paper';
import AssetExample from './components/AssetExample';
export default function App() {
return (
<SafeAreaView style={styles.container}>
<Text style={styles.paragraph}>
Change code in the editor and watch it change on your phone! Save to get a shareable url.
</Text>
<Card>
<AssetExample />
</Card>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
backgroundColor: '#ecf0f1',
padding: 8,
},
paragraph: {
margin: 24,
fontSize: 18,
fontWeight: 'bold',
textAlign: 'center',
},
});
Więc co można zauważyć? Każdy Reactowiec powinien się tutaj bez problemu odnaleźć, mamy funkcję App, która w tym przypadku odpowiada za renderowanie tekstu, oraz karty. I to pierwsza różnica między React Native, zamiast korzystać z elementów typu div
czy span
, używasz komponentów takich jak View
, Text
, czy ScrollView
.
Oprócz tego, stylowanie – koncepcja jest ta sama, kod opisujący wygląd elementów jest łudząco podobny do CSS-a, poza drobnymi różnicami, jak używanie camelCase naprawdę łatwo można się tutaj odnaleźć.
Natywne moduły
Jedną z największych zalet React Native jest możliwość korzystania z natywnych modułów. Jeśli potrzebujesz dostępu do funkcji urządzenia, takich jak aparat, sensor ruchu czy system plików. Oprócz tego ogrom paczek, umożliwia wykrywanie kątów urządzenia, lokalizacji i mnóstwa innych funkcji. Tworzy to nowe wyzwania związane z niezbędnym researchem w celu znalezienia działających i wydajnych rozwiązań. Ale otwiera nasze aplikacja na całkiem nowe możliwości.
Nawigacja
Podczas gdy React Router jest powszechnie stosowany w projektach React, w mobilnym świecie React Native używamy React Navigation. Ta biblioteka umożliwia łatwe zarządzanie nawigacją między różnymi ekranami.
function App() {
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
Poprzez prostą definicję dostępnych ekranów (rout w react router)możliwe jest przechodzenie pomiędzy widokami
const HomeScreen = ({ navigation }) => {
return (
<View>
<Text>Strona Domowa</Text>
<Button
title="Przejdź do szczegółów"
onPress={() => navigation.navigate('Details')}
/>
</View>
);
};
A poprzez użycie navigate() – możemy wymusić przeniesienie na inne podstrony.
Podsumowanie
Choć wiele koncepcji stylowania jest podobnych, różnice wynikają z faktu, że React Native ma do czynienia z natywnym renderowaniem na różnych platformach mobilnych. Przejście z React na webie do React Native wymaga zrozumienia tych różnic i dostosowania się do specyfiki środowiska mobilnego. Sam proces testowania zmian, musi wyglądać inaczej, ale takie wyzwania czynią naszą pracę tylko ciekawszą.
Dodaj komentarz