Mitigate image flickering
This commit is contained in:
parent
e0f18171c0
commit
195569730f
@ -4,7 +4,7 @@
|
|||||||
import { BLUR_ENABLED } from '@/site/config';
|
import { BLUR_ENABLED } from '@/site/config';
|
||||||
import { clsx} from 'clsx/lite';
|
import { clsx} from 'clsx/lite';
|
||||||
import Image, { ImageProps } from 'next/image';
|
import Image, { ImageProps } from 'next/image';
|
||||||
import { useEffect, useRef, useState } from 'react';
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||||
|
|
||||||
export default function ImageBlurFallback(props: ImageProps) {
|
export default function ImageBlurFallback(props: ImageProps) {
|
||||||
const {
|
const {
|
||||||
@ -18,6 +18,9 @@ export default function ImageBlurFallback(props: ImageProps) {
|
|||||||
const [isLoading, setIsLoading] = useState(true);
|
const [isLoading, setIsLoading] = useState(true);
|
||||||
const [didError, setDidError] = useState(false);
|
const [didError, setDidError] = useState(false);
|
||||||
|
|
||||||
|
const onLoad = useCallback(() => setIsLoading(false), []);
|
||||||
|
const onError = useCallback(() => setDidError(true), []);
|
||||||
|
|
||||||
const [hideBlurPlaceholder, setHideBlurPlaceholder] = useState(false);
|
const [hideBlurPlaceholder, setHideBlurPlaceholder] = useState(false);
|
||||||
|
|
||||||
const imageClassName = 'object-cover h-full';
|
const imageClassName = 'object-cover h-full';
|
||||||
@ -80,8 +83,8 @@ export default function ImageBlurFallback(props: ImageProps) {
|
|||||||
ref: imgRef,
|
ref: imgRef,
|
||||||
priority,
|
priority,
|
||||||
className: imageClassName,
|
className: imageClassName,
|
||||||
onLoad: () => setIsLoading(false),
|
onLoad,
|
||||||
onError: () => setDidError(true),
|
onError,
|
||||||
}} />
|
}} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user