In this tutorial, we aim to get you familiar with handling user input and navigation in a React Native app. By the end of this guide, you will be able to capture and respond to user interactions and navigate between different screens in your app.
You will learn:
- How to capture user input using built-in React Native components.
- How to handle user interactions such as button clicks.
- How to navigate between different screens in your app using React Navigation.
Prerequisites:
- Basic understanding of JavaScript and React.
- A working environment with React Native installed.
React Native provides built-in components such as TextInput and Button to handle user inputs.
The TextInput component is used to capture text input from the user.
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={text => onChangeText(text)}
value={value}
/>
Here, onChangeText is a function that gets called every time the text changes, and value is the current text present in the text box.
The Button component is used to create a clickable button.
<Button
onPress={onPressLearnMore}
title="Learn More"
color="#841584"
/>
The onPress function is called when the button is clicked.
React Navigation is a popular library for handling navigation in a React Native app. Install it using the npm package manager:
npm install @react-navigation/native
Let's create a simple login form to demonstrate user input.
import React, { useState } from 'react';
import { View, TextInput, Button } from 'react-native';
const LoginForm = () => {
const [username, setUsername] = useState('');
const [password, setPassword] = useState('');
const handleLogin = () => {
// Handle login functionality here
};
return (
<View>
<TextInput
value={username}
onChangeText={(text) => setUsername(text)}
placeholder={'Username'}
/>
<TextInput
value={password}
onChangeText={(text) => setPassword(text)}
placeholder={'Password'}
secureTextEntry={true}
/>
<Button title={'Login'} onPress={handleLogin} />
</View>
);
};
export default LoginForm;
In this code, we're using React's useState hook to manage our form's state. When the user types into the TextInput fields, the corresponding state variables are updated. When the user presses the 'Login' button, the handleLogin function is called.
Let's create two screens and navigate between them. First, install the stack navigator:
npm install @react-navigation/stack
Next, create two screens:
import React from 'react';
import { View, Text, Button } from 'react-native';
const HomeScreen = ({ navigation }) => (
<View>
<Text>Home Screen</Text>
<Button title="Go to Details" onPress={() => navigation.navigate('Details')} />
</View>
);
const DetailsScreen = () => (
<View>
<Text>Details Screen</Text>
</View>
);
export { HomeScreen, DetailsScreen };
Then, create a stack navigator and include both screens:
import { createStackNavigator } from '@react-navigation/stack';
import { HomeScreen, DetailsScreen } from './screens';
const Stack = createStackNavigator();
const App = () => (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
export default App;
In this code, pressing the button in the HomeScreen will navigate to the DetailsScreen.
You've learned how to handle user input and navigate between screens in a React Native app. You can now create more complex apps with multiple screens and user interactions.
Next, you could learn more about form validation and how to handle more complex navigation scenarios.
Additional resources:
- React Native Documentation
- React Navigation Documentation
Remember to test your solutions and understand what each line of code is doing. Happy coding!