React Native,<TextInput> onChange{(text) => setState(text)} 返回一个对象而不是字符串。尽管默认值是一个字符串。为什么

React Native, <TextInput> onChange{(text) => setState(text)} is returning an object instead of a string. Eventhough the default value is a String. Why

<TextInput
  onChange={(text) => {
    setEmail(text);
  }}
  style={styles.textInput}
  placeholder="Email"
/>
<TextInput
  onChange={(text) => setPassword(text)}
  style={styles.textInput}
  secureTextEntry
  placeholder="Password"
/>

我正在尝试设置电子邮件和密码状态

const [email, setEmail] = useState("default");
const [password, setPassword] = useState("default");

我需要使用它们通过 firebase auth 登录,但是只要我在字段中输入一个值,状态就会更改为对象,并且 firebase 函数只接受字符串值,我已经尝试将这些值转换为字符串() 在使用 set 方法时不起作用。

这里可能出了什么问题?

截图: 在值之前它是字符串,在输入值之后它们变成对象。

onChange={(text) => setPassword(text)}

改成这样

onChange={(event) => setPassword(event.target.value)}

文本是一个事件对象

实例sandbox

这是因为 onChange 的参数是 object 而不是 text

{ nativeEvent: { eventCount, target, text} }

textobject 而不是 string

onChange={(text) => {
    setEmail(text);
  }}

解决方案是使用onChangeText事件,将text作为string传递。

<TextInput
  onChangeText={newText => setEmail(newText)}
/>