0

我正在为博客文章创建客户端搜索,并将结果显示在带有图像的卡片中。我认为一个非常简单的用例。我正在使用 Next.js 及其图像组件来加载图像。

我正在对结果进行实时输入过滤器,以便在您输入结果卡时更改。我遇到的一个问题是,当您键入并替换卡片以及新图像时,浏览器仍在加载最后一张图像并导致加载图像的积压。

我想知道是否有办法取消刚刚删除的图像的请求。另一种方法是对过滤进行去抖动,但我希望尽可能提高性能。

这是我的一些代码。

搜索卡

import Image from 'next/image';
import styles from './SearchCard.module.scss';

export default function SearchCard({ data, onClick }: any) {
    return (
        <a className={styles.searchCard} onClick={onClick}>
            <Image
                src={data.image}
                width={289}
                height={152}
                alt=""
                placeholder="blur"
                blurDataURL={data.placeholderImage}
            />

            <h3>{data.title}</h3>
            <p>{data.description}</p>
        </a>
    );
}

实时过滤

const searchInitiatives = (value: string) => {
   const results = initiativesDb.search(value);
   const foundInitiatives = results.map((el: any) => el.item);
   value ? setInitiatives(foundInitiatives) : setInitiatives(defaultInitiatives);
};

搜索结果


initiatives
    .filter((_, i) => i < INITIATIVES_MAX)
    .map((el, i) => (
         <SearchCard key={el.guid} onClick={handleSelect} data={el} />
    ))}

图像加载积压

这发生在您的类型和结果根据您的查询更新/过滤时。此示例中的这些图像很小,但确实会影响最新的图像加载时间。特别是当您模拟慢速连接时。

在此处输入图像描述

4

0 回答 0