🐛CSS should not process duplicated in experimentalStyleIsolation (#2075)

This commit is contained in:
Zt448143356 2022-05-09 15:21:42 +08:00 committed by GitHub
parent 389ba257b0
commit 7fa3eb28f3
2 changed files with 34 additions and 0 deletions

View File

@ -301,6 +301,35 @@ test('should not transform @font-face', () => {
expect(removeWs(styleNode.textContent)).toBe(removeWs(expectValue));
});
test('should not transform style that has already been transform [1]', async () => {
const actualValue = '.react15-main {display: flex;}';
const expectValue = 'div[data-qiankun="react15"] .react15-main {display: flex;}';
const styleNode = fakeStyleNode('');
CSSProcessor.process(styleNode, 'div[data-qiankun="react15"]');
const textNode = document.createTextNode(actualValue);
styleNode.appendChild(textNode);
await sleep(10);
CSSProcessor.process(styleNode, 'div[data-qiankun="react15"]');
expect(removeWs(styleNode.textContent)).toBe(removeWs(expectValue));
});
test('should not transform style that has already been transform [2]', async () => {
const actualValue = '.react15-main {display: flex;}';
const expectValue = 'div[data-qiankun="react15"] .react15-main {display: flex;}';
const styleNode = fakeStyleNode(actualValue);
CSSProcessor.process(styleNode, 'div[data-qiankun="react15"]');
CSSProcessor.process(styleNode, 'div[data-qiankun="react15"]');
expect(removeWs(styleNode.textContent)).toBe(removeWs(expectValue));
});
// jest cannot handle @page directive correctly
test.skip('should not transform @page', () => {
const actualValue = '@page {margin: 1cm;}';

View File

@ -41,6 +41,10 @@ export class ScopedCSS {
}
process(styleNode: HTMLStyleElement, prefix: string = '') {
if (ScopedCSS.ModifiedTag in styleNode) {
return;
}
if (styleNode.textContent !== '') {
const textNode = document.createTextNode(styleNode.textContent || '');
this.swapNode.appendChild(textNode);
@ -52,6 +56,7 @@ export class ScopedCSS {
// cleanup
this.swapNode.removeChild(textNode);
(styleNode as any)[ScopedCSS.ModifiedTag] = true;
return;
}