【问题标题】:TextInput return type in React NativeReact Native 中的 TextInput 返回类型
【发布时间】:2022-01-16 03:00:43
【问题描述】:

我正在尝试使用从 TextInput 获取其值的 useState 更新 firebase 数据库。但显然 useState 数据类型更改为对象而不是字符串。我该怎么做,因为firebase只需要字符串来更新数据库。

 const UpdateUser = async () => {
try {
  db.ref("users/" + auth.currentUser.uid).update({
    name: newuser,
  });
} catch (error) {
  alert(error);
}
setNewuser("");};

文本输入代码:

 <View>
    <Text style={styles.ProfileName}>Display Username:</Text>
    <TextInput
      placeholder={user}
      value={newuser}
      onChange={(text) => {
        setNewuser(text);
      }}
    />
    <Button onPress={UpdateUser} title="Change" />
  </View>

【问题讨论】:

  • 我在这里看不到 useState 的用法,但是您应该考虑两件事。 onChange 属性返回 nativeEvent,而不是值。如果要获取值,应该使用onChangeText prop,或者从nativeEvent中提取值。 useState 钩子返回一个包含两个元素的数组,statesetState 动作。你应该提取那些解构赋值const [newUser, setNewuser] = useState("");
  • 是的 onChangeText 工作。 newuser 是一个 useState,我只是没有分享那部分代码。非常感谢!附言。如果您希望您可以发布答案,我很乐意批准。

标签: javascript react-native firebase-realtime-database expo


【解决方案1】:

onChangeText 是一个简单的 prop,它给出每次更改时输入字段的值。//string

onChange 通过{ nativeEvent: { eventCount, target, text} } 传递一个事件。 //对象

您可以找到更多关于 here 的区别。 只需将其更改为 onChangeText 即可。

【讨论】:

    【解决方案2】:

    onChange 更改为 OnChangeText 然后它将起作用

    refer this

    【讨论】:

    • 嗨 Ajo,欢迎来到 Stack Overflow!添加新答案时,请确保提供新信息(尚未说明的信息)。这有助于确保社区不断改进:)
    【解决方案3】:

    试试这个

    <View>
        <Text style={styles.ProfileName}>Display Username:</Text>
        <TextInput
          placeholder={user}
          value={newuser}
          onChange={(e) => {
            setNewuser(e.target.value);
          }}
        />
        <Button onPress={UpdateUser} title="Change" />
      </View>
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2021-06-30
    • 2020-06-18
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多