Skip to content

Commit 2b3ec86

Browse files
committed
test: add test case
1 parent 6aa2d8b commit 2b3ec86

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/SingleObserver/index.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ function SingleObserver(props: SingleObserverProps, ref: React.Ref<HTMLElement>)
3838

3939
const getDom = () =>
4040
findDOMNode<HTMLElement>(elementRef.current) ||
41-
findDOMNode<HTMLElement>((elementRef.current as any)?.nativeElement) ||
41+
// Support `nativeElement` format
42+
(elementRef.current && typeof elementRef.current === 'object'
43+
? findDOMNode<HTMLElement>((elementRef.current as any)?.nativeElement)
44+
: null) ||
4245
findDOMNode<HTMLElement>(wrapperRef.current);
4346

4447
React.useImperativeHandle(ref, () => getDom());

tests/ref.spec.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,22 @@ describe('ResizeObserver.ref', () => {
2424

2525
expect(resizeRef.current).toEqual(container.querySelector('.little'));
2626
});
27+
28+
it('ignore invalidate forward', () => {
29+
const My = React.forwardRef((_, ref) => {
30+
React.useImperativeHandle(ref, () => 233);
31+
32+
return <div className="little" />;
33+
});
34+
35+
const resizeRef = React.createRef<HTMLDivElement>();
36+
37+
const { container } = render(
38+
<ResizeObserver ref={resizeRef}>
39+
<My />
40+
</ResizeObserver>,
41+
);
42+
43+
expect(resizeRef.current).toEqual(container.querySelector('.little'));
44+
});
2745
});

0 commit comments

Comments
 (0)