【发布时间】:2021-10-27 02:21:03
【问题描述】:
我正在为我的应用程序使用下一个 js,并且我正在设计一个搜索字段。一旦用户键入内容,建议就会开始出现,但我想在输入栏不在焦点时隐藏它。
当用户再次点击它时,我想将其显示回来。搜索建议包含路线,因此我无法使用onFocus 和onBlur,因为当我注册点击时元素会失去焦点,并且路线仅在我释放它时才会发生。
我也试过css,但是无法注册焦点,或者有什么办法吗?
请帮帮我!!
这是我的示例代码:
const [suggestionState,setSuggestionState] = useState(false);
<input type="input"
ref={inputRef}
autoFocus
className={styles['search-bar-input']}
onFocus={()=>{setSuggestionState(true)}}
onBlur={()=>{setSuggestionState(false)}}
placeholder="Search Bloggo"
onChange={(e)=>{
var trimmedQuery = e.target.value;
trimmedQuery = trimmedQuery.trim();
setSearchQuery(trimmedQuery);
getSuggestions(trimmedQuery)
}}
onKeyDown={(e)=>{handleKeypress(e)}}
/>
{
searchQuery.length == 0 || suggestionState == false? '':
<div className={styles['search-bar-suggestions']}>
<Link>... </Link>
</div>
}
【问题讨论】:
-
你不能使用两个变量(suggestion_state_by_input_focus 和Suggestion_state_by_search_suggestion_focus)并在其中一个为真时显示列表吗?
标签: javascript css reactjs next.js