Пользовательский интерфейс материала 5: Класс, определенный стилизованной утилитой, не работает во вложенных элементах

#reactjs #material-ui #styled-components

Вопрос:

Я пытался повысить верификацию пользовательского интерфейса до 5(с 4). Я следовал документации по переходу от способа создания стилей для определения класса к стилизованному API. Но имена классов, определенные во вложенном компоненте/элементе, не принимают стили, определенные утилитой styled.

 import React from 'react';
import {styled} from '@mui/material/styles';
import Box from "@mui/material/Box";
import theme from "../../../theme/theme";
import FormControl from "@mui/material/FormControl";
import {Dialog, DialogContent, Select} from "@mui/material";
import MenuItem from "@mui/material/MenuItem";


const PREFIX = 'AnalysisCalculatorModal';

const classes = {
    childFormControl: `${PREFIX}-childFormControl`,
    childFormControlSelectRoot: `${PREFIX}-childFormControlSelectRoot`
};


const themeColor = theme.palette.primary.main;
const StyledTypography = styled(Typography)({color:'red'});

const Root = styled('div')(({
    [`amp; .${classes.childFormControl}`]: {
        marginTop: "13px",
        fontSize: '10px',
        backgroundColor:'red',   
        "amp; input::placeholder": {
            fontSize: "10px"
        }
    },
   [`amp; .${classes.childFormControlSelectRoot}`]: {
      fontSize: '14px'
   },
   [`amp; .${classes.title}`]: {
    color: 'red'
   },
}));


export function AnalysisCalculatorModal(props) {
    return (
        <Root>
            <Dialog
                maxWidth={"md"}
                fullWidth
                aria-labelledby="customized-dialog-title"
                open={true}
                scroll="body">
                <DialogContent>
                    <StyledTypography>Working Title</StyledTypography> // this works fine!!!! but I want styles to be applied to below Typography
                    <Typography className={classes.title}>Title</Typography>
                    <Box className={'d-flex'}>
                        <FormControl size={'small'}
                                     classes={{root: classes.childFormControl}}
                                     style={{maxWidth: '80px'}}
                                     variant="outlined">
                            <Select
                                classes={{root: classes.childFormControlSelectRoot}}
                                value={'A'}>
                                <MenuItem value={"A"}>A</MenuItem>
                                <MenuItem value={'B'}>B</MenuItem>
                            </Select>
                        </FormControl>
                    </Box>
                </DialogContent>
            </Dialog>
        </Root>
    );
}
 

В приведенном выше фрагменте кода стили, определенные в классах «classes.childFormControl» и «classes.title», не применяются. но тот же код работает, если я использую стили создания(в версии 4).
В компоненте стиля StyledTypography стили применяются правильно.
Я что-то упускаю ?

index.js

 import CssBaseline from "@mui/material/CssBaseline";
import { ThemeProvider, StyledEngineProvider } from "@mui/material/styles";
import theme from "./theme/theme"

ReactDOM.render(
  <React.StrictMode>
    <StyledEngineProvider injectFirst>
      <ThemeProvider theme={theme}>
        <CssBaseline />
        <App />
      </ThemeProvider>
    </StyledEngineProvider>
  </React.StrictMode>,
  document.getElementById("root")
);
 

пакет.json

     "@emotion/react": "^11.5.0",
    "@emotion/styled": "^11.3.0",
    "@fortawesome/fontawesome-svg-core": "^1.2.32",
    "@fortawesome/free-solid-svg-icons": "^5.15.1",
    "@fortawesome/react-fontawesome": "^0.1.13",
    "@mui/icons-material": "^5.1.0",
    "@mui/lab": "^5.0.0-alpha.54",
    "@mui/material": "^5.1.0",
    "@mui/styles": "^5.1.0",