使用react-search-autocomplete组件无法显示在线用户结果,求排查
解决react-search-autocomplete无法展示自定义数组结果的问题
你的代码存在两个关键问题,导致组件无法正确展示搜索结果:
问题1:组件默认搜索字段不匹配
react-search-autocomplete组件默认会根据name字段进行搜索匹配,但你的onlineUsers数组中存储用户名的字段是username,这直接导致搜索时无法匹配到任何结果。
问题2:格式化结果时字段引用错误
formatResult函数中你尝试渲染item.name,但你的数据对象里只有username字段,即使后续搜索逻辑修复,结果展示也会出现异常。
修复步骤
1. 指定组件的搜索字段
在ReactSearchAutocomplete组件中添加fuseOptions配置,明确告诉组件要基于username字段进行搜索:
<ReactSearchAutocomplete items={onlineUsers} onSearch={handleOnSearch} onHover={handleOnHover} onSelect={handleOnSelect} onFocus={handleOnFocus} autoFocus formatResult={formatResult} // 添加该配置指定搜索字段 fuseOptions={{ keys: ["username"] }} />
2. 修正格式化函数的字段引用
将formatResult中的item.name改为item.username:
const formatResult = (item) => { return ( <> <span style={{ display: 'block', textAlign: 'left' }}>name: {item.username}</span> </> ) }
修改完成后,在输入框中输入"Asd"即可看到对应的用户结果,同时handleOnSearch的控制台输出也会显示匹配到的结果。
内容的提问来源于stack exchange,提问作者user18986944
相关产品推荐
相关产品推荐

