[РЕДАКТИРОВАТЬ 19 апреля]
Я создал CODESANDBOX , чтобы показать, конечно, проблему, которая не возникает в песочнице. Единственное различие между этим кодом и моим состоит в том, что я продублировал код компонента Button в примере SANDBOX, тогда как в моем приложении компонент Button импортирован из библиотеки (которая принадлежит той же рабочей области пряжи, что и приложение). ) . Библиотека построена с использованием webpack и babel, за исключением React и Material-UI
externals: {
react: "react",
"react-dom": "react-dom",
"react-router": "react-router",
"react-router-dom": "react-router-dom",
"@material-ui/core": "@material-ui/core",
"@material-ui/icons": "@material-ui/icons",
"@material-ui/lab": "@material-ui/lab",
"@material-ui/styles": "@material-ui/styles",
formik: "formik",
},
. Проверка компонентов в браузере показывает разницу при стилизации между песочницей и моим приложением:
на обоих стороны, класс применяется к компоненту таким же образом:
в песочнице
в моем приложении
но на песочнице , MuiButtonBase-root background-color
переопределяется MuiButton-root background-color
тогда как в моем приложении все наоборот. MuiButton-root backGroundColor
кажется переопределенным, но MuiButtonBase-root background-color
Однако , если я создаю компонент RecreatedButton
в приложении, просто импортируя Button component of my UI Library
и реэкспортируйте его без каких-либо изменений (просто передавая указанный c реквизит, запрашиваемый компонентом), затем стилирование применяется правильно, как в примере с песочницей.
это так странно для меня ...
Почему такое поведение?
просто импортировать и реэкспортировать как компонент
import {
Button as LibraryButton,
EButtonTypes,
IButtonProps,
} from "@mylibrairy/reactcomponentscommon"; <---- importing the button
import React from "react";
const RecreatedButton: React.FC<IButtonProps> = (
props: IButtonProps
): JSX.Element => {
return (
<LibraryButton type={EButtonTypes.BUTTON}>
{props.children}
</LibraryButton>
);
};
export { RecreatedButton };
Используя оба в app.ts. Один получил тему, другой нет
import { ThemeProvider } from "@material-ui/core/styles";
import {
Button as LibraryButton,
EButtonTypes,
IButtonProps,
} from "@mylibrairy/reactcomponentscommon"
import React from "react";
import AppBar from "../../UIComponents/AppBar";
import { RecreatedButton } from "../../UIComponents/Button";
import { MUITheme } from "./../../Theming/defaultTheme";
export const MainApp: React.FC = (): JSX.Element => {
return (
<ThemeProvider theme={MUITheme}>
<>
<AppBar />
<LibraryButton type={EButtonTypes.BUTTON}> I'm the library component, directly used as is, and background color is NOT CORRECT ></LibraryButton>
<RecreatedButton>
I'm recreated button, just rexporting the library component, and the backgroundcolor is correct !?!?{" "}
</RecreatedButton>
</>
</ThemeProvider>
);
};