From 537f4c357bf799f9b7c4fb9592d2e17d138457d4 Mon Sep 17 00:00:00 2001 From: TrickyPi <33021497+TrickyPi@users.noreply.github.com> Date: Mon, 21 Feb 2022 12:31:39 +0800 Subject: [PATCH] fix: del messageInstance when configuring getContainer (#34123) * fix: del messageInstance when configuring getContainer * test: move the new test to the bottom of the test lists --- components/message/__tests__/config.test.js | 31 +++++++++++++++++++++ components/message/index.tsx | 1 + 2 files changed, 32 insertions(+) diff --git a/components/message/__tests__/config.test.js b/components/message/__tests__/config.test.js index dc71498b48..a3e4c0c401 100644 --- a/components/message/__tests__/config.test.js +++ b/components/message/__tests__/config.test.js @@ -125,4 +125,35 @@ describe('message.config', () => { transitionName: 'ant-move-up', }); }); + + it('should be able to config getContainer, although messageInstance already exists', () => { + function createContainer() { + const container = document.createElement('div'); + document.body.appendChild(container); + return [ + container, + () => { + document.body.removeChild(container); + }, + ]; + } + const [container1, removeContainer1] = createContainer(); + const [container2, removeContainer2] = createContainer(); + expect(container1.querySelector('.ant-message-notice')).toBeFalsy(); + expect(container2.querySelector('.ant-message-notice')).toBeFalsy(); + message.config({ + getContainer: () => container1, + }); + const messageText1 = 'mounted in container1'; + message.info(messageText1); + expect(container1.querySelector('.ant-message-notice').textContent).toEqual(messageText1); + message.config({ + getContainer: () => container2, + }); + const messageText2 = 'mounted in container2'; + message.info(messageText2); + expect(container2.querySelector('.ant-message-notice').textContent).toEqual(messageText2); + removeContainer1(); + removeContainer2(); + }); }); diff --git a/components/message/index.tsx b/components/message/index.tsx index a61d6a571c..278ca80a53 100755 --- a/components/message/index.tsx +++ b/components/message/index.tsx @@ -54,6 +54,7 @@ function setMessageConfig(options: ConfigOptions) { } if (options.getContainer !== undefined) { getContainer = options.getContainer; + messageInstance = null; // delete messageInstance for new getContainer } if (options.transitionName !== undefined) { transitionName = options.transitionName;