我目前正在使用react和firebase编写一个注册表单,并且通过检查来自firebase的用户列表,我无法验证用户提供的用户名是否已被使用。这是我的代码的简化版本:
console.log(findUsername(username))
问题是,当我undefined
时,它会在我的控制台中返回true
。但是,它仍然记录字符串“test”,并运行在该函数内部编写的任何内容。它只是不会在if
语句中返回userList
。我在代码中做了很多检查,我可以确保:
console.log(user.username === username)
包含我存储在firebase中的每个用户userList
时render()
返回true 这是我第一次询问有关Stack Overflow的问题,如果我的帖子中有任何含糊不清或缺乏信息,我会道歉。
答案 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), ...]