Хорошо, люди, это проблема. Когда я нажимаю ввод android для вставки текста и появляется клавиатура, мой экран возвращается назад. Это происходит только на Android. Это происходит с каждым вводом, и если я запускаю экран с открытой клавиатурой и закрываю его, появляется та же проблема. Я знаю, что не работаю с последней версией реактивной системы или библиотек.
Вот мое окружение и пакет. json.
"react-native": "0.61.3"
"@react-native-community/datetimepicker": "^2.2.2",
"@react-native-community/masked-view": "^0.1.5",
"@react-navigation/bottom-tabs": "^5.0.0-alpha.34",
"@react-navigation/core": "^5.0.0-alpha.32",
"@react-navigation/drawer": "^5.0.0-alpha.36",
"@react-navigation/material-bottom-tabs": "^5.0.0-alpha.31",
"@react-navigation/material-top-tabs": "^5.0.0-alpha.30",
"@react-navigation/native": "^5.0.0-alpha.24",
"@react-navigation/stack": "^5.0.0-alpha.58",
Среда
SO: Ubuntu 20.04 LTS (Also tried on OSX)
node: 14.1.0
API Android: 28
npm:6.14.4
И приложение выглядит примерно так. (Не совсем код, я только что присоединился к этому проекту, и код - такая боль в заднице.)
//App.js
<Tab.Navigator
initialRouteName={'HOME'}
tabBarOptions={{
activeTintColor: 'white',
style: {backgroundColor: 'black'},
}}>
<Tab.Screen
name="Account"
component={props => <ProfileTab {...props} />}
>
</Tab.Screen>
</Tab.Navigator>
//ProfileTab.js
<Stack.Navigator
mode="modal"
headerMode="none"
initialRouteName="SessionFilter"
>
<Stack.Screen
component={props => (
<Login
close={() => {
if (!currentUser) navigation.navigate('SessionFilter');
navigation.goBack();
}}
sendToRegister={() => {
navigation.goBack();
navigation.navigate('Registry');
}}
/>
)}
name="Login"
/>
</Stack.Navigator>
//Login.js
return (
<SafeAreaView style={{ flex: 1, backgroundColor: "white" }}>
<ScrollView
contentContainerStyle={{
backgroundColor: "white",
paddingHorizontal: 15,
minWidth: 350,
alignItems: "center",
flex: 1,
minHeight: Dimensions.get("window").height + 30,
}}
>
<TextField>
</ScrollView>
</SafeAreaView>
);
};
//TextField.js
import React from 'react';
import { TextField } from 'react-native-material-textfield';
export const TextField = (props) => (
<TextField
{...props}
tintColor="black"
textColor="black"
fontSize={12}
autoCapitalize="none"
onChangeText={text => props.onChange({ target: { value: text } })}
titleTextStyle={{ fontSize: 10 }}
contentInset={{ label: 0 }}
secureTextEntry={props.type && props.type === "password"}
/>
);
Я пытался возобновить весь дерьмовый код, но это что-то вроде этого. Пропущенные части я считаю не важными.