React Native 键盘显示但似乎未检测到输入 (Android)

React Native Keyboard Shows But Doesn't Appear to Detect Input (Android)

我正在尝试在 React Native 中设置一些输入,如下面的代码所示,但是我有一个奇怪的错误,我可以点击输入框,键盘会出现,但是如果我点击键盘,它不会什么都做不了,我什至不能按 shift 或打开数字部分。例如,当我更改“名称”状态时,问题绝对不会显示值,因为它会发生变化。

为什么我的 React native 键盘完全没有响应?

编辑:所以如果我 运行 它在网络版本中,输入完全正常并且一切正常,我的键盘只是在应用程序的 Expo Go 构建中不起作用,任何人都可以帮助这个?

import { useState } from "react";
import {
  Button,
  StyleSheet,
  TextInput,
  ScrollView,
  ActivityIndicator,
  View,
} from "react-native";
import firebase from "../database/firebaseDb";

const AddUserScreen = () => {
  const [dbRef, setDbRef] = useState(firebase.firestore().collection("users"));
  const [name, setName] = useState("namehi");
  const [email, setEmail] = useState("");
  const [mobile, setMobile] = useState("");
  const [isLoading, setIsLoading] = useState(false);

  const storeUser = () => {
    if (name === "") {
      alert("Please fill in at least your name.");
    } else {
      setIsLoading(true);
      dbRef
        .add({
          name: name,
          email: email,
          mobile: mobile,
        })
        .then((res) => {
          setName("");
          setEmail("");
          setMobile("");
          setIsLoading(false);
          this.props.navigation.navigate("UserScreen");
        })
        .catch((err) => {
          console.error("Error found: ", err);
          setIsLoading(false);
        });
    }
  };

  if (isLoading) {
    return (
      <View style={styles.preloader}>
        <ActivityIndicator size="large" color="#9E9E9E" />
      </View>
    );
  }

  return (
    <ScrollView style={styles.container}>
      <View style={styles.inputGroup}>
        <TextInput
          placeholder={"Name"}
          value={name}
          onChangeText={(val) => {
            console.log(val); // <<<<<<<< This console.log doesn't fire at all
            setName("it worked");
          }}
        />
      </View>
      <View style={styles.inputGroup}>
        <TextInput
          multiline={true}
          numberOfLines={4}
          placeholder={"Email"}
          value={email}
          onChangeText={setEmail}
        />
      </View>
      <View style={styles.inputGroup}>
        <TextInput
          placeholder={"Mobile"}
          value={mobile}
          onChangeText={setMobile}
        />
      </View>
      <View style={styles.button}>
        <Button title="Add User" onPress={() => storeUser()} color="#19AC52" />
      </View>
    </ScrollView>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    padding: 35,
  },
  inputGroup: {
    flex: 1,
    padding: 0,
    marginBottom: 15,
    borderBottomWidth: 1,
    borderBottomColor: "#cccccc",
  },
  preloader: {
    left: 0,
    right: 0,
    top: 0,
    bottom: 0,
    position: "absolute",
    alignItems: "center",
    justifyContent: "center",
  },
});
export default AddUserScreen;

你必须使用箭头函数来调用setEmail

const onChangeEmailHandler = (t) => {
 setEmail(t)
}
.
.
.
 <TextInput
          multiline={true}
          numberOfLines={4}
          placeholder={"Email"}
          value={email}
          onChangeText={onChangeEmailHandler}
        />

在我的 phone 上多次卸载并重新安装该应用程序后,最终这开始为我工作,似乎是 Expo Go 的问题,而不是代码的问题。