Javascript 由于某些原因,在映射<;上的onClick事件之后;李>;韩元';不行。反应js

Javascript 由于某些原因,在映射<;上的onClick事件之后;李>;韩元';不行。反应js,javascript,reactjs,Javascript,Reactjs,我正在尝试使用下拉列表创建搜索字段。 出于某种原因,在映射到一个数组并列出几个“li”之后,onClick处理程序甚至不点击其中任何一个就向suggestionSelected(value)function 3发送值 有人能帮忙解决一个问题吗?随信附上一张截图,显示我试图输入一个以“s”开头的城市名称。请参阅控制台中的输出 有问题的代码段被注释 从“React”导入React; 从“shortid”导入shortid; 从“/CityForm.module.css”导入模块; 将默认类导出到表单

我正在尝试使用下拉列表创建搜索字段。 出于某种原因,在映射到一个数组并列出几个“li”之后,onClick处理程序甚至不点击其中任何一个就向suggestionSelected(value)function 3发送值

有人能帮忙解决一个问题吗?随信附上一张截图,显示我试图输入一个以“s”开头的城市名称。请参阅控制台中的输出

有问题的代码段被注释

从“React”导入React;
从“shortid”导入shortid;
从“/CityForm.module.css”导入模块;
将默认类导出到表单扩展React.Component{
状态={
文本:“”,
项目:[“莫斯科”、“萨拉托夫”、“新加坡”、“纽约”],
建议:[]
};
handleChange=(事件)=>{
这是我的国家({
文本:event.target.value
});
常量值=event.target.value;
让建议=[];
如果(value.length>0){
const regex=new RegExp(`^${value}`,'i');
建议=this.state.items.sort().filter(v=>regex.test(v));
}
这是我的国家({
建议:建议
});
}
renderSuggestions(){
const{suggestions}=this.state;
如果(建议长度===0){
返回null;
}否则{
返回(
    {suggestions.map((项目)=>
  • {item}
  • )}
) } } handleSubmit=(事件)=>{ event.preventDefault(); 这个.props.onSubmit({ id:shortid.generate(), text:this.state.text }); 这是我的国家({ 文本:“” }); } suggestionSelected(值){ console.log(值); //这是我的国家({ //文本:值, //建议:[] // }); } render(){ const{items}=this.state; 返回( {this.renderSuggestions()} 添加城市 ) } }


提前感谢。

尝试将图像函数调用更改为

  { suggestions.map((item) => <li onClick={() => this.suggestionSelected(item)}> {item} </li> ) }
{suggestions.map((项目)=>
  • this.suggestionSelected(项目)}>{item}
  • )}
    通过将其作为
    onClick={this.suggestionSelected(item)}
    传递,它实际上在渲染时调用函数
    this.suggestionSelected(item)

    如果希望在回调赋值本身中作为参数传递回某些内容,请将其作为函数引用传递


    onClick={()=>this.suggestionSelected(item)}
    错误:

  • 正确:
  • 此。建议已选择(项目)}
  • 完美!非常感谢你!我忘了这么一件小事)我怎么会这么笨呢)在那种情况下,你能把其中任何一个标记为答案吗,这对其他人都会有帮助。我正在尝试,但网站上说我非常感谢甘扎尔!我非常感谢你的帮助。成功了。我也忘了绑定函数。当然,没问题。如果这个答案对你有帮助,请记住选择它作为正确答案。