[英]Safari (mobile) IOS - Input doesn't loses focus when clicking outside
[英]Search input loses focus when it doesn't find any title
每當我嘗試搜索時,我只能輸入與其中一個標題相似的字母。 如果任何字母不同,我就會失去輸入的焦點。 它以前可以正常工作,但我知道現在發生了什么。 有什么建議么?
代碼:
if (props.items.length === 0) {
return (
<div className="files-list center">
<Card>
<h2>No files found.</h2>
</Card>
</div>
);
} else if (
props.items.filter(
(file) =>
file.title.toLowerCase().includes(searchInput) ||
file.title.toUpperCase().includes(searchInput)
).length === 0
) {
return (
<div className="filesList">
<div className="search">
<input
type="text"
placeholder="Search Files"
onChange={(event) => setSearchInput(event.target.value)}
/>
</div>
<Card>
<h2>No files found.</h2>
</Card>
</div>
);
}
return (
<React.Fragment>
<div className="filesList">
<div className="actionsBtn">
<NavLink to="/add-file" className="addFileBtn" title="Add File">
<FontAwesomeIcon icon={faPlus} />
</NavLink>
<input
type="text"
placeholder="Search Files"
onChange={(event) => setSearchInput(event.target.value)}
/>
</div>
<ul className="files-list">
{props.items
.filter(
(file) =>
file.title.toLowerCase().includes(searchInput) ||
file.title.toUpperCase().includes(searchInput)
)
.map((file) => (
<FilesPostItem
key={file.id}
id={file.id}
title={file.title}
file={file.file}
creator={file.creator.name}
description={file.description}
creatorId={file.creator}
onDelete={props.onDeleteFile}
/>
))}
</ul>
</div>
</React.Fragment>
);
我認為發生的情況是,您的“默認”返回表單開始被“if else”中的返回重置。 所以 Input 是一個新的 DOM 元素並且失去了焦點。
您可能希望在默認回報中添加類似的內容並刪除“if else”語句。
<ul className="files-list"> {props.items .filter( (file) => file.title.toLowerCase().includes(searchInput) || file.title.toUpperCase().includes(searchInput) ) .map((file) => ( <FilesPostItem key={file.id} id={file.id} title={file.title} file={file.file} creator={file.creator.name} description={file.description} creatorId={file.creator} onDelete={props.onDeleteFile} /> ))} </ul> {props.items .filter( (file) => file.title.toLowerCase().includes(searchInput) || file.title.toUpperCase().includes(searchInput) ).length > 0 && <Card> <h2>No files found.</h2> </Card> }
這是做什么的? 它會將“未找到文件”消息添加到您的默認退貨中,並僅在項目為空時顯示。
但我很確定,有更好的方法來做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.