React Native is a mobile development that’s based on React that we can use to do mobile development.
In this article, we’ll look at how to use it to create an app with React Native.
Alert
We can add alerts with the Alert.alert
method.
For example, we can write:
import React from 'react';
import { View, StyleSheet, Button, Alert } from "react-native";
const createTwoButtonAlert = () =>
Alert.alert(
"Alert Title",
"My Alert Msg",
[
{
text: "Cancel",
onPress: () => console.log("Cancel Pressed"),
style: "cancel"
},
{ text: "OK", onPress: () => console.log("OK Pressed") }
],
{ cancelable: false }
);
const createThreeButtonAlert = () =>
Alert.alert(
"Alert Title",
"My Alert Msg",
[
{
text: "Ask me later",
onPress: () => console.log("Ask me later pressed")
},
{
text: "Cancel",
onPress: () => console.log("Cancel Pressed"),
style: "cancel"
},
{ text: "OK", onPress: () => console.log("OK Pressed") }
],
{ cancelable: false }
);
export default function App() {
return (
<View style={styles.container}>
<Button title="2-Button Alert" onPress={createTwoButtonAlert} />
<Button title="3-Button Alert" onPress={createThreeButtonAlert} />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center"
},
});
We call the Alert.alert
method with the alert title, alert message, and an array of objects to render the buttons.
The text
property has the button text.
onPress
is a function that’s run when we press the button.
style
has the style name of the button.
cancelable
sets whether we can cancel the button press.
Animated
The Animated
library lets us make animations fluid and painless to build.
For example, we can write:
import React, { useRef } from 'react';
import { Animated, Text, View, StyleSheet, Button } from "react-native";
export default function App() {
const fadeAnim = useRef(new Animated.Value(0)).current;
const fadeIn = () => {
Animated.timing(fadeAnim, {
toValue: 1,
duration: 5000
}).start();
};
const fadeOut = () => {
Animated.timing(fadeAnim, {
toValue: 0,
duration: 5000
}).start();
};
return (
<View style={styles.container}>
<Animated.View
style={[
styles.fadingContainer,
{
opacity: fadeAnim
}
]}
>
<Text style={styles.fadingText}>Fading View!</Text>
</Animated.View>
<View style={styles.buttonRow}>
<Button title="Fade In" onPress={fadeIn} />
<Button title="Fade Out" onPress={fadeOut} />
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: "center",
justifyContent: "center"
},
fadingContainer: {
paddingVertical: 8,
paddingHorizontal: 16,
backgroundColor: "lightblue"
},
fadingText: {
fontSize: 28,
textAlign: "center",
margin: 10
},
buttonRow: {
flexDirection: "row",
marginVertical: 16
}
});
We call the Animate.timing
method to show our animation.
The first argument is the ref for the animation we want to show.
Then we used the fadeAnim
object as the value of the opacity
property in the Animated.View
component.
Whatever is inside Animated.View
is animated.
Other methods for show animations include Animated.decay
to create an animation that starts with an initial velocity and slows to a stop gradually.
Animated.spring
provides us with spring physical model animation.
They take the same arguments as Animation.timing
.
We can also compose animations.
Animated.delay
starts an animation with a delay.
Animated.parallel
starts a number of animations at the same time.
Animated.sequence
starts animation in order.
Animated.stagger
starts animation in order and in parallel with successive delays.
Combining Animated Values
We can combine 2 animated values with the following methods:
Animated.add()
Animated.subtract()
Animated.divide()
Animated.modulo()
Animated.multiply()
We can compose animations by writing:
import React, { useRef } from 'react';
import { Animated, Text, View, StyleSheet, Button } from "react-native";
export default function App() {
const fadeAnim = useRef(new Animated.Value(0)).current;
const fadeIn = () => {
Animated.sequence([
Animated.delay(3000),
Animated.timing(fadeAnim, {
toValue: 1,
duration: 5000,
useNativeDriver: true
})
]).start()
};
const fadeOut = () => {
Animated.timing(fadeAnim, {
toValue: 0,
duration: 5000,
useNativeDriver: true
}).start();
};
return (
<View style={styles.container}>
<Animated.View
style={[
styles.fadingContainer,
{
opacity: fadeAnim
}
]}
>
<Text style={styles.fadingText}>Fading View!</Text>
</Animated.View>
<View style={styles.buttonRow}>
<Button title="Fade In" onPress={fadeIn} />
<Button title="Fade Out" onPress={fadeOut} />
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: "center",
justifyContent: "center"
},
fadingContainer: {
paddingVertical: 8,
paddingHorizontal: 16,
backgroundColor: "lightblue"
},
fadingText: {
fontSize: 28,
textAlign: "center",
margin: 10
},
buttonRow: {
flexDirection: "row",
marginVertical: 16
}
});
In the fadeIn
function, we have the Animated.sequence
method called with 3000ms.
Then we call Animated.timing
to run our fade-in animation.
Conclusion
We can show alerts and animations with React Native.