调用时函数正常运行,但始终返回undefined

时间:2018-06-17 21:27:48

标签: javascript reactjs firebase firebase-realtime-database

我目前正在使用react和firebase编写一个注册表单,并且通过检查来自firebase的用户列表,我无法验证用户提供的用户名是否已被使用。这是我的代码的简化版本:

console.log(findUsername(username))

问题是,当我undefined时,它会在我的控制台中返回true。但是,它仍然记录字符串“test”,并运行在该函数内部编写的任何内容。它只是不会在if语句中返回userList。我在代码中做了很多检查,我可以确保:

  • 数组console.log(user.username === username)包含我存储在firebase中的每个用户
  • this.state.username是用户输入的实际文本输入
  • 迭代userList
  • render()返回true
  • {{1}}功能正常运行

这是我第一次询问有关Stack Overflow的问题,如果我的帖子中有任何含糊不清或缺乏信息,我会道歉。

2 个答案:

答案 0 :(得分:1)

您的return true从您传递给userList.map()的匿名函数返回,而不是从函数findUsername返回。 userList.map()不会从内部匿名函数传播该返回值。

如果您想知道userList数组是否包含某些字符串,我根本不清楚您使用map()的原因。在我看来,如果你想要一个指示数组是否包含字符串的布尔值,你想要使用contains()代替:

return userList.contains(username)

答案 1 :(得分:1)

由于该函数未返回任何内容,因此未定义控制台日志。您在地图中返回true,但findUsername本身不返回任何内容。 要检查用户是否存在,您只需执行此操作即可。

[(100, 80, 200, 0.2), ...]