【发布时间】:2022-12-15 09:27:28
【问题描述】:
我有一个 React 应用程序,它基本上显示模因提要(仅图像文件),并且每个模因都有一些可用于搜索该特定模因的标签。我有一个 SearchBar 组件:
const SearchBar = ({ memes, setSearchResults }) => {
const handleSubmit = (e) => e.preventDefault()
const handleSearchChange = (e) => {
if (!e.target.value) return setSearchResults(memes)
const searchArray = e.target.value.trim().replace(/-/g, '').split(' ')
const resultsArray = searchAlg(memes, searchArray)
setSearchResults(resultsArray)
}
return (
<div>
<form className="search" onSubmit={handleSubmit}>
<input
className="search-input"
type="text"
id="search"
onChange={handleSearchChange}
/>
<button className="search-button">Hae</button>
</form>
</div>
)
}
...和 Memefeed 组件
const MemeFeed = ({ memes }) => {
return (
<div>
{memes.map((meme) => (
<Meme key={meme.id} meme={meme} />
))}
</div>
)
}
...和模因组件
const Meme = ({ meme }) => {
return (
<div className="memePost">
<LazyLoadImage src={meme.url} alt={meme.url} />
<a
href={meme.url}
download={meme.url}
target="_blank"
rel="noopener noreferrer"
>
Download
</a>
</div>
)
}
主要组件基本上只是为 MemeFeed 组件提供 searchResults 数组,因此只有那些与搜索标签匹配的模因才会显示在页面上。
因此,如果我只是滚动 memefeed(大约有 100 个 meme)并查看网络选项卡,它会显示图像(meme)仅下载一次,如果我向上滚动,则不会重新获取这些图像。
但是,当我使用搜索栏/过滤器时,它会重新获取那些相同的图像,即使它们已经被加载。当我输入过滤器时,提取实际上并没有发生,但只有当我从过滤器退格时才会发生。
我查看了 useMemo 的文档,但看不出这对我有何帮助。
【问题讨论】:
标签: javascript reactjs optimization caching search