带有两个选项的搜索栏作为下拉列表(ReactJS)
Search Bar with Two options as dropdown (ReactJS)
假设我想按照 ReactJS 中的以下规范创建一个搜索栏(类似于 Github 的搜索栏):
在用户开始输入时的输入中,将出现 2 个选项作为下拉列表。当用户单击该选项时,将执行与之相关的操作。
我从 Material-UI 找到了“自动完成”,并在 Google 上尝试了不同的网站,但我找不到我要找的答案,我找到的那些文章是关于具有定义值的下拉菜单。
有什么想法或参考吗?非常感谢!
您需要 1 个状态来保存输入值。然后基于它来渲染下面的下拉列表。您将需要一个带有可选搜索类型参数的提交处理程序,以重用下拉列表中每个选项的 onClick 事件。
const [keyword, setKeyword] = React.useState('')
const handleSearch = (searchType) => {
if (searchType) {
// search with type (Author or Book)
doSearch({ keyword, type })
} else {
// search with keyword only
doSearch({ keyword })
}
}
渲染:
<input value={keyword} onChange={e => setKeyword(e.target.value)} />
<button onClick={() => handleSearch()}>Search</button>
// render the dropdown if value existed
{Boolean(keyword) && (
<div onClick={() => handleSearch('AUTHOR')}>{keyword} - Search in Author</div>
)}
假设我想按照 ReactJS 中的以下规范创建一个搜索栏(类似于 Github 的搜索栏):
在用户开始输入时的输入中,将出现 2 个选项作为下拉列表。当用户单击该选项时,将执行与之相关的操作。
我从 Material-UI 找到了“自动完成”,并在 Google 上尝试了不同的网站,但我找不到我要找的答案,我找到的那些文章是关于具有定义值的下拉菜单。
有什么想法或参考吗?非常感谢!
您需要 1 个状态来保存输入值。然后基于它来渲染下面的下拉列表。您将需要一个带有可选搜索类型参数的提交处理程序,以重用下拉列表中每个选项的 onClick 事件。
const [keyword, setKeyword] = React.useState('')
const handleSearch = (searchType) => {
if (searchType) {
// search with type (Author or Book)
doSearch({ keyword, type })
} else {
// search with keyword only
doSearch({ keyword })
}
}
渲染:
<input value={keyword} onChange={e => setKeyword(e.target.value)} />
<button onClick={() => handleSearch()}>Search</button>
// render the dropdown if value existed
{Boolean(keyword) && (
<div onClick={() => handleSearch('AUTHOR')}>{keyword} - Search in Author</div>
)}