gpt4 book ai didi

reactjs - mui 使用入口点插入作用域影子 DOM 样式时选择未设置样式的下拉选项

转载 作者:行者123 更新时间:2023-12-03 08:14:31 24 4
gpt4 key购买 nike

请注意,这是针对 MUI v5 @mui/material 的,使用 v4 @material-ui/core

最终弄清楚如何在使用情感入口点插入作用域阴影 DOM 样式时显示 @mui/material 样式(请参阅这篇文章 How to create insertion point to mount styles in shadow dom for MUI material v5 in React custom element ),结果发现选择下拉列表的样式不正确对于包含 @mui/material 组件的 Demo 组件。

这是 stackblitz https://stackblitz.com/edit/react-d8xtdu-s2cufr?file=demo.js

import React from 'react';
import Demo from './demo';
import { ThemeProvider, createTheme } from '@mui/material/styles';
import { StylesProvider, jssPreset } from '@mui/styles';
import { CacheProvider } from '@emotion/react';
import createCache from '@emotion/cache';
import { create } from 'jss';
import { render } from 'react-dom';

const theme = createTheme();

class MyWebComponent extends HTMLElement {
connectedCallback() {
const shadowRoot = this.attachShadow({ mode: 'open' });
const emotionRoot = document.createElement('style');
const mountPoint = document.createElement('div');
shadowRoot.appendChild(emotionRoot);
const reactRoot = shadowRoot.appendChild(mountPoint);

const jss = create({
...jssPreset(),
insertionPoint: reactRoot,
});

const cache = createCache({
key: 'css',
prepend: true,
container: emotionRoot,
});

render(
<StylesProvider jss={jss}>
<CacheProvider value={cache}>
<ThemeProvider theme={theme}>
<Demo />
</ThemeProvider>
</CacheProvider>
</StylesProvider>,
mountPoint
);
}
}
if (!customElements.get('my-element')) {
customElements.define('my-element', MyWebComponent);
}

而不是像这样显示(此外,单击事件未正确捕获,特别是无法单击选择框箭头将其关闭):

enter image description here

下拉选项显示如下:

enter image description here

最佳答案

您应该添加MenuProps.disablePortal = true以将Menu挂载在shadow DOM内(以便能够使用作用域样式)

<Select MenuProps={{ disablePortal: true }}>

关于reactjs - mui 使用入口点插入作用域影子 DOM 样式时选择未设置样式的下拉选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69828392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com