diff --git a/src/Image.tsx b/src/Image.tsx index 4e37d86..f089417 100644 --- a/src/Image.tsx +++ b/src/Image.tsx @@ -173,6 +173,15 @@ const ImageInternal: CompoundedComponent = props => { COMMON_PROPS.map(prop => props[prop]), ); + // Filter out img-specific props from wrapper div props + const wrapperProps = useMemo(() => { + const obj = { ...otherProps }; + COMMON_PROPS.forEach((prop: any) => { + delete obj[prop]; + }); + return obj; + }, [otherProps]); + // ========================== Register ========================== const registerData: ImageElementProps = useMemo( () => ({ @@ -207,7 +216,7 @@ const ImageInternal: CompoundedComponent = props => { return ( <>
)[] = [ 'srcSet', 'useMap', 'alt', + 'fetchPriority', ]; diff --git a/src/interface.ts b/src/interface.ts index 42120a7..0c5b110 100644 --- a/src/interface.ts +++ b/src/interface.ts @@ -13,6 +13,7 @@ export type ImageElementProps = Pick< | 'srcSet' | 'useMap' | 'alt' + | 'fetchPriority' >; export type PreviewImageElementProps = { diff --git a/tests/basic.test.tsx b/tests/basic.test.tsx index 526823e..13e16c9 100644 --- a/tests/basic.test.tsx +++ b/tests/basic.test.tsx @@ -51,6 +51,19 @@ describe('Basic', () => { expect(onClickMock).toHaveBeenCalledTimes(1); }); + it('fetchPriority should be passed to img element', () => { + const { container } = render( + , + ); + const img = container.querySelector('img'); + const wrapper = container.querySelector('.rc-image'); + expect(img).toHaveAttribute('fetchpriority', 'high'); + expect(wrapper).not.toHaveAttribute('fetchpriority'); + }); + it('className and style props should work on img element', () => { const { container } = render(