React Native - это мобильная разработка, основанная на React, которую мы можем использовать для разработки мобильных приложений.
В этой статье мы рассмотрим, как использовать его для создания приложения с React Native.
DrawerLayoutAndroid
Мы можем добавить макет выдвижного ящика в наше приложение для Android с помощью компонента DrawerLayoutAndroid
.
Например, мы можем написать:
import React, { useState } from 'react'; import { Button, DrawerLayoutAndroid, Text, StyleSheet, View } from "react-native"; export default function App() { const [drawerPosition, setDrawerPosition] = useState("left"); const changeDrawerPosition = () => { if (drawerPosition === "left") { setDrawerPosition("right"); } else { setDrawerPosition("left"); } }; const navigationView = ( <View style={styles.navigationContainer}> <Text style={{ margin: 10, fontSize: 15 }}>I'm in the Drawer!</Text> </View> ); return ( <DrawerLayoutAndroid drawerWidth={300} drawerPosition={drawerPosition} renderNavigationView={() => navigationView} > <View style={styles.container}> <Text style={{ margin: 10, fontSize: 15 }}> DrawerLayoutAndroid example </Text> <Button title="Change Drawer Position" onPress={() => changeDrawerPosition()} /> <Text style={{ margin: 10, fontSize: 15 }}> Drawer on the {drawerPosition}! Swipe from the side to see! </Text> </View> </DrawerLayoutAndroid> ); } const styles = StyleSheet.create({ container: { flex: 1, alignItems: "center", justifyContent: "center", paddingTop: 50, backgroundColor: "#ecf0f1", padding: 8 }, navigationContainer: { flex: 1, paddingTop: 50, backgroundColor: "#fff", padding: 8 } });
У нас есть состояние drawerPosition
для изменения положения ящика.
Button
принимает опору onPress
, которая принимает функцию, вызывающую changeDrawerPosition
для переключения положения ящика.
Компонент DrawerLayoutAndroid
имеет ящик.
drawerWidth
соответствует ширине ящика.
drawerPosition
устанавливает положение ящика.
renderNavigationView
- это функция, которая отображает содержимое ящика.
Затем, когда мы перетащим влево или вправо, мы увидим ящик.
РазрешенияAndroid
Мы можем добавить объект PermissionsAndroid
, чтобы мы могли запрашивать разрешения в нашем приложении.
Например, мы можем написать:
import React from 'react'; import { StyleSheet, Text, View, PermissionsAndroid, Button } from "react-native"; import Constants from "expo-constants"; const requestCameraPermission = async () => { try { const granted = await PermissionsAndroid.request( PermissionsAndroid.PERMISSIONS.CAMERA, { title: "Camera Permission", message: "Can I use the Camera?", buttonNeutral: "Ask Me Later", buttonNegative: "Cancel", buttonPositive: "OK" } ); if (granted === PermissionsAndroid.RESULTS.GRANTED) { console.log("You can use the camera"); } else { console.log("Camera permission denied"); } } catch (err) { console.warn(err); } }; export default function App() { return ( <View style={styles.container}> <Text style={styles.item}>Try permissions</Text> <Button title="request permissions" onPress={requestCameraPermission} /> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: "center", paddingTop: Constants.statusBarHeight, backgroundColor: "#ecf0f1", padding: 8 }, item: { margin: 24, fontSize: 28, fontWeight: "bold", textAlign: "center" } });
Мы добавляем функцию requestCameraPermission
, которая вызывает метод PermissionAndroid.request
для запроса разрешения.
Аргумент PermissionsAndroid.PERMISSIONS.CAMERA
означает, что мы хотим получить разрешения для камеры.
Второй аргумент имеет объект с некоторыми свойствами.
title
- это заголовок диалогового окна запроса разрешения.
message
- это сообщение для диалогового окна запроса разрешения.
buttonNeutral
- текст, отображаемый при нейтральном выборе.
buttonNegative
- это текст кнопки отказа в разрешении.
buttonPosition
- это текст кнопки для принятия разрешения.
Он возвращает обещание с выбором разрешения.
Мы можем проверить, предоставлено ли оно, проверив PermissionsAndroid.RESULTS.GRANTED
.
Заключение
Мы можем добавить ящик и запросить разрешения с помощью библиотеки React Native.