Skip to content

Commit 2e8aa2c

Browse files
authored
fix: keep parent in strict mode (#295)
* fix: keep parent in strict mode * test: add autodestroy case
1 parent 6338619 commit 2e8aa2c

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

src/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ export function generateTrigger(
563563
);
564564
};
565565

566-
attachParent = (popupContainer: HTMLDivElement) => {
566+
attachParent = (popupContainer: HTMLElement) => {
567567
raf.cancel(this.attachId);
568568

569569
const { getPopupContainer, getDocument } = this.props;
@@ -606,11 +606,11 @@ export function generateTrigger(
606606
popupContainer.style.top = '0';
607607
popupContainer.style.left = '0';
608608
popupContainer.style.width = '100%';
609-
this.attachParent(popupContainer);
610609

611610
this.portalContainer = popupContainer;
612611
}
613612

613+
this.attachParent(this.portalContainer);
614614
return this.portalContainer;
615615
};
616616

tests/basic.test.jsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable max-classes-per-file */
22

3-
import React, { createRef } from 'react';
3+
import React, { StrictMode, createRef } from 'react';
44
import ReactDOM from 'react-dom';
55
import { act, cleanup, fireEvent, render } from '@testing-library/react';
66
import { spyElementPrototypes } from 'rc-util/lib/test/domHook';
@@ -820,4 +820,23 @@ describe('Trigger.Basic', () => {
820820
expect(isChildUpdate).toBeFalsy();
821821
expect(isGrandsonUpdate).toBeFalsy();
822822
});
823+
824+
it('should work in StrictMode with autoDestroy', () => {
825+
const { container } = render(
826+
<Trigger action={['click']} autoDestroy={true}>
827+
<div className="target">click</div>
828+
</Trigger>,
829+
{ wrapper: StrictMode },
830+
);
831+
832+
// click to show
833+
trigger(container, '.target');
834+
expect(document.querySelector('.rc-trigger-popup')).toBeTruthy();
835+
// click to hide
836+
trigger(container, '.target');
837+
expect(document.querySelector('.rc-trigger-popup')).toBeFalsy();
838+
// click to show
839+
trigger(container, '.target');
840+
expect(document.querySelector('.rc-trigger-popup')).toBeTruthy();
841+
});
823842
});

0 commit comments

Comments
 (0)