#react-native #user-interface #verify #customizing
Вопрос:
Как я могу создать страницу с таким проверочным кодом (на картинке) в React Native? Я нашел некоторые библиотеки, но я не могу настроить их в соответствии с дизайном. Пожалуйста, укажите способ его настройки, введите описание изображения здесь
Комментарии:
1. Укажите, что именно вам нужно настроить. могу вам помочь
2. Я просто хочу настроить клавиатуру для своего приложения, следуя прикрепленному изображению в моем посте.
3. У меня здесь есть дизайн пользовательского интерфейса, если вы можете, пожалуйста, рассказать мне о компонентах и библиотеках, следующих за моим дизайном пользовательского интерфейса . Огромное спасибо. Я всего лишь новичок и хотел бы понять все компоненты, соответствующие дизайну пользовательского интерфейса
Ответ №1:
Вы можете попробовать здесь https://snack.expo.io/@vasylnahuliak/stackoverflow-68096640
import React, { useState, useEffect } from 'react';
import {
SafeAreaView,
View,
TouchableOpacity,
Text,
StyleSheet,
Dimensions,
} from 'react-native';
const WINDOW_WIDTH = Dimensions.get('window').width;
const KEYBOARD_WIDTH = WINDOW_WIDTH - 40;
const keyboardConfig = [
{
label: '1',
value: 1,
},
{
label: '2',
value: 2,
},
{
label: '3',
value: 3,
},
{
label: '4',
value: 4,
},
{
label: '5',
value: 5,
},
{
label: '6',
value: 6,
},
{
label: '7',
value: 7,
},
{
label: '8',
value: 8,
},
{
label: '9',
value: 9,
},
{
label: 'C',
value: 'clear',
},
{
label: '0',
value: 0,
},
{
label: '⌫',
value: 'remove',
},
];
const Key = ({ label, value, onPress }) => {
const handlePress = () => {
onPress({ label, value });
};
return (
<TouchableOpacity onPress={handlePress} style={styles.keyView}>
<Text style={styles.keyText}>{label}</Text>
</TouchableOpacity>
);
};
const CIRCLE_SIZE = 40;
const Circle = ({ isActive }) => {
return <View style={[styles.circle, isActive amp;amp; styles.circleActive]} />;
};
const CODE_LENGTH = 4;
export default function App() {
const [code, setCode] = useState('');
const handleKeyPress = (key) => {
if (typeof key.value === 'number') {
setCode(code key.value);
}
if (key.value === 'remove') {
setCode(code.slice(0, -1));
}
if (key.value === 'clear') {
setCode('');
}
};
useEffect(() => {
if (code.length === CODE_LENGTH) {
// NOTE: example right code
if (code === '1234') {
alert('Success')
} else {
alert('Wrong code. Try Again')
}
setCode('');
}
}, [code])
return (
<SafeAreaView>
<View style={styles.circles}>
{Array(4)
.fill()
.map((_, index) => (
<Circle isActive={code.length > index} />
))}
</View>
<Text style={styles.title}>Enter the code</Text>
<View style={styles.keyboard}>
{keyboardConfig.map((key) => (
<Key {...key} onPress={handleKeyPress} />
))}
</View>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
title: {
paddingBottom: 16,
textAlign: 'center',
fontSize: 32,
},
keyboard: {
width: KEYBOARD_WIDTH,
flexDirection: 'row',
flexWrap: 'wrap',
alignSelf: 'center',
},
keyView: {
width: KEYBOARD_WIDTH / 3,
height: 60,
justifyContent: 'center',
alignItems: 'center',
},
keyText: {
fontSize: 32,
},
circles: {
flexDirection: 'row',
justifyContent: 'center',
marginVertical: 32
},
circle: {
width: CIRCLE_SIZE,
height: CIRCLE_SIZE,
marginHorizontal: 8,
borderRadius: CIRCLE_SIZE,
backgroundColor: 'grey',
},
circleActive: {
backgroundColor: 'tomato',
},
});
Комментарии:
1. Но как я могу использовать функцию «onInputCompleted» для этого
2. Пожалуйста, добавьте свой код, о котором идет речь. Я не понимаю, о чем ты
onInputCompleted
. В моем коде логика полного кода будет автоматической после нажатия 4 символа кода3.Да, это будет функция перехода на следующую страницу после нажатия символа 4 кодов. Это похоже на вход, выполненный в библиотеке react-native-sms-verifycode react-native-sms-verifycode.
4. Если вы можете, пожалуйста, расскажите мне о компонентах и библиотеках, следующих за моим дизайном пользовательского интерфейса . Огромное спасибо. Я всего лишь новичок и хотел бы понять все компоненты, соответствующие дизайну пользовательского интерфейса
5. Мне жаль. Но в StackOverflow вы можете создать вопрос о том, как выполнить задание, но не для всех, ответьте на вашу работу. В моем случае я получу от вас полный ответ о том, как делать компоненты, и полностью настроенный пример. И теперь вы должны сделать это сами. Спасибо и до свидания