Javascript 在react widgets组合框中过滤:精确匹配显示整个列表,而不是匹配项

Javascript 在react widgets组合框中过滤:精确匹配显示整个列表,而不是匹配项,javascript,react-widgets,Javascript,React Widgets,在上,键入“Jase”后,列表将被过滤,只有完全匹配的列表才可见 然而,在我的项目和下面的代码片段中,键入“test1”后,我看到的是整个列表,而不是一个匹配的条目 如何将组合框配置为仅显示匹配的条目而不是整个列表 let{Combobox}=ReactWidgets; ReactDOM.render( , document.getElementById(“react”) ); 经过一番研究,我注意到,您的示例和他们网站上的示例之间的唯一区别是,他们使用对象数组作为数据,而您使用字符串数组 事

在上,键入“Jase”后,列表将被过滤,只有完全匹配的列表才可见

然而,在我的项目和下面的代码片段中,键入“test1”后,我看到的是整个列表,而不是一个匹配的条目

如何将组合框配置为仅显示匹配的条目而不是整个列表

let{Combobox}=ReactWidgets;
ReactDOM.render(
,
document.getElementById(“react”)
);

经过一番研究,我注意到,您的示例和他们网站上的示例之间的唯一区别是,他们使用对象数组作为数据,而您使用字符串数组

事实证明,如果您键入的文本与选项的值和文本都匹配,那么它就会出现不需要的行为。但在网站上的示例中,选项的实际值是数字,这种情况不会发生

我不确定这是组件的bug,还是预期的行为。但作为一种解决方法,您可以创建一个包装器组件,将字符串数组转换为对象数组,并向后转换。大概是这样的:

function ComboboxWrapper({data,onChange,textField,...rest}){
  const wrappedData = data.map((text,value)=>({text,value}))
    return React.createElement(Combobox,{
    data:wrappedData,
    onChange:(c)=>{
      onChange && onChange(typeof c=="object"?c.text:c)
    },
    textField:"text",
    ...rest
   })
}
这是一个演示的例子