Я создал собственное приложение Expo React, в котором есть поля TextInput и Picker. При создании пользовательского интерфейса все было хорошо, но как только я начинаю заполнять формы, приложение внезапно вылетает ни в каком конкретном поле. Иногда он вылетает на самом первом экране, а иногда достигает второго экрана, а затем вылетает без ошибок и предупреждений, поэтому я изо всех сил пытаюсь понять, откуда именно возникла проблема. Для хорошего понимания рабочего процесса и воспроизводимости приведу код.
App.tsx
// App.tsx
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { FontAwesome } from '@expo/vector-icons';
import { Colors } from './src/constants/Colors';
import FormScreen from './src/screens/FormScreen';
import './global.css';
const Tab = createBottomTabNavigator();
export default function App() {
return (
(
),
}}
/>
);
}
FormScreen.tsx
import React from 'react';
import { ImageBackground } from 'react-native';
import { SafeAreaView } from 'react-native-safe-area-context';
import { FormProvider } from '../context/FormContext';
import FormNavigator from '../navigation/FormNavigator';
import Stepper from '../components/Stepper';
import { useNavigationState } from '@react-navigation/native';
import FontAwesome from '@expo/vector-icons/FontAwesome';
const steps: { name: string; icon: keyof typeof FontAwesome.glyphMap }[] = [
{ name: 'Identité', icon: 'user' }
];
const FormScreenContainer = () => {
const currentStepIndex = useNavigationState((state) => state.routes[0]?.state?.index ?? 0);
return (
);
};
export default function FormScreen() {
return (
);
}
FormNavigator.tsx
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import Step1Identity from '../screens/form-steps/Step1Identity';
const Stack = createStackNavigator();
const FormNavigator = () => {
return (
);
};
export default FormNavigator;
Step1Identity.tsx
import React, { useContext, useCallback } from 'react';
import { View, Text, TextInput, ScrollView, TouchableOpacity } from 'react-native';
import { FormContext } from '../../context/FormContext';
import { useNavigation } from '@react-navigation/native';
import { Picker } from '@react-native-picker/picker';
import StyledDatePicker from '@/components/form/StyledDatePicker';
import countries from '../../../utils/countries.json';
const Step1Identity = () => {
const navigation = useNavigation();
const { formData, setFormData } = useContext(FormContext);
const genderItems = [
{ label: 'Sexe', value: '' },
{ label: 'Masculin', value: 'M' },
{ label: 'Féminin', value: 'F' },
];
const updateField = useCallback(
(field: string, value: any) => {
setFormData((prev) => ({ ...prev, [field]: value }));
},
[setFormData]
);
const handleNext = () => {
// Add validation here later
navigation.navigate('Step2Document');
};
return (
Identité du passager
Nom *
updateField('nom', text)}
/>
Prénom(s) *
updateField('prenom', text)}
/>
Nom de jeune fille
updateField('nomJeuneFille', text)}
/>
Sexe *
selectedValue={formData.sexe}
onValueChange={(itemValue) => updateField('sexe', itemValue)}
mode="dropdown"
style={{ marginVertical: -8 }}>
{genderItems.map((item) => (
))}
updateField('birthDate', date)}
/>
Lieu de naissance *
updateField('birthPlace', text)}
placeholderTextColor="#95a5a6"
/>
Adresse email
updateField('email', text)}
placeholderTextColor="#95a5a6"
keyboardType="email-address"
autoCapitalize="none"
/>
Information supplémentaires
Profession *
updateField('profession', text)}
/>
Fonction
updateField('fonction', text)}
/>
Nationalité *
updateField('nationality', value)}>
{countries.map((country: any) => (
))}
Pays de résidence *
updateField('residence', text)}
mode="dropdown">
{countries.map((country: any) => (
))}
Suivant
);
};
export default Step1Identity;
Countries.json
[
{
"alpha_code": "AFG",
"en_short_name": "Afghanistan",
"nationality": "Afghan"
},
{
"alpha_code": "ALA",
"en_short_name": "Åland Islands",
"nationality": "Åland Island"
}
]
Подробнее здесь: https://stackoverflow.com/questions/798 ... lling-form
Приложение Expo React Native вылетает без ошибок при заполнении формы ⇐ Javascript
Форум по Javascript
1761901495
Anonymous
Я создал собственное приложение Expo React, в котором есть поля TextInput и Picker. При создании пользовательского интерфейса все было хорошо, но как только я начинаю заполнять формы, приложение внезапно вылетает ни в каком конкретном поле. Иногда он вылетает на самом первом экране, а иногда достигает второго экрана, а затем вылетает без ошибок и предупреждений, поэтому я изо всех сил пытаюсь понять, откуда именно возникла проблема. Для хорошего понимания рабочего процесса и воспроизводимости приведу код.
App.tsx
// App.tsx
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { FontAwesome } from '@expo/vector-icons';
import { Colors } from './src/constants/Colors';
import FormScreen from './src/screens/FormScreen';
import './global.css';
const Tab = createBottomTabNavigator();
export default function App() {
return (
(
),
}}
/>
);
}
FormScreen.tsx
import React from 'react';
import { ImageBackground } from 'react-native';
import { SafeAreaView } from 'react-native-safe-area-context';
import { FormProvider } from '../context/FormContext';
import FormNavigator from '../navigation/FormNavigator';
import Stepper from '../components/Stepper';
import { useNavigationState } from '@react-navigation/native';
import FontAwesome from '@expo/vector-icons/FontAwesome';
const steps: { name: string; icon: keyof typeof FontAwesome.glyphMap }[] = [
{ name: 'Identité', icon: 'user' }
];
const FormScreenContainer = () => {
const currentStepIndex = useNavigationState((state) => state.routes[0]?.state?.index ?? 0);
return (
);
};
export default function FormScreen() {
return (
);
}
FormNavigator.tsx
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import Step1Identity from '../screens/form-steps/Step1Identity';
const Stack = createStackNavigator();
const FormNavigator = () => {
return (
);
};
export default FormNavigator;
Step1Identity.tsx
import React, { useContext, useCallback } from 'react';
import { View, Text, TextInput, ScrollView, TouchableOpacity } from 'react-native';
import { FormContext } from '../../context/FormContext';
import { useNavigation } from '@react-navigation/native';
import { Picker } from '@react-native-picker/picker';
import StyledDatePicker from '@/components/form/StyledDatePicker';
import countries from '../../../utils/countries.json';
const Step1Identity = () => {
const navigation = useNavigation();
const { formData, setFormData } = useContext(FormContext);
const genderItems = [
{ label: 'Sexe', value: '' },
{ label: 'Masculin', value: 'M' },
{ label: 'Féminin', value: 'F' },
];
const updateField = useCallback(
(field: string, value: any) => {
setFormData((prev) => ({ ...prev, [field]: value }));
},
[setFormData]
);
const handleNext = () => {
// Add validation here later
navigation.navigate('Step2Document');
};
return (
Identité du passager
Nom *
updateField('nom', text)}
/>
Prénom(s) *
updateField('prenom', text)}
/>
Nom de jeune fille
updateField('nomJeuneFille', text)}
/>
Sexe *
selectedValue={formData.sexe}
onValueChange={(itemValue) => updateField('sexe', itemValue)}
mode="dropdown"
style={{ marginVertical: -8 }}>
{genderItems.map((item) => (
))}
updateField('birthDate', date)}
/>
Lieu de naissance *
updateField('birthPlace', text)}
placeholderTextColor="#95a5a6"
/>
Adresse email
updateField('email', text)}
placeholderTextColor="#95a5a6"
keyboardType="email-address"
autoCapitalize="none"
/>
Information supplémentaires
Profession *
updateField('profession', text)}
/>
Fonction
updateField('fonction', text)}
/>
Nationalité *
updateField('nationality', value)}>
{countries.map((country: any) => (
))}
Pays de résidence *
updateField('residence', text)}
mode="dropdown">
{countries.map((country: any) => (
))}
Suivant
);
};
export default Step1Identity;
Countries.json
[
{
"alpha_code": "AFG",
"en_short_name": "Afghanistan",
"nationality": "Afghan"
},
{
"alpha_code": "ALA",
"en_short_name": "Åland Islands",
"nationality": "Åland Island"
}
]
Подробнее здесь: [url]https://stackoverflow.com/questions/79805566/expo-react-native-app-crashes-with-no-errors-while-filling-form[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия