我正试图创建一个像linkedin那样的ajax user search
,所以当我从键盘上输入一个字符时,我应该不用按回车键就能得到结果。
在我的输入字段中,我使用**onKeyUp = {sendData(this)}**在sendData函数中发送数据,然后获取结果。
<input type="text" id="userfield" onKeyUp={sendData(this)}/>
function sendData (input){
if (input!=null){
console.log("data:",input)
fetch('/userSearch',{
method:'POST',
headers:{'Content-Type': 'application/json'},
body: JSON.stringify({ input: input.value})
})
}
}
我的问题是在console.log("data:",input)
行中我得到了未定义的。这意味着onKeyUp事件没有向函数发送任何东西。我错过了什么吗?
2条答案
按热度按时间3okqufwl1#
在React
onKeyUp
和事件监听器中,通常期望传递一个函数,并且默认情况下会将event
作为参数传递。在您的情况下,您希望传递sendData
函数,如下所示:然后接收输入元素,如:
同样,如果你试图获取一些数据,你必须以某种方式处理它。你应该要么添加一个
.then((result)=>{/* Handle the result */})
到fetch
调用,要么使sendData
成为一个async
函数,然后await
的结果如下:ws51t4hk2#
您可以使用
e.target为您提供触发事件的元素。
e.target.value检索该元素的值