Я хочу добавить одно или несколько пользовательских значений цветовых реквизитов в компонент кнопки MUI. Я следовал за https://javascript.plainenglish.io/extend-material-ui-theme-in-typescript-a462e207131f, что почти сработало. Я использовал пользовательские свойства, созданные в файле createPalette.d.ts, но когда я пытаюсь использовать их в пользовательском компоненте, возникает ошибка, и я не могу использовать пользовательский цвет.
Возникла ошибка:
Я следовал за Невозможно настроить типы цветовой палитры в теме Material UI в TypeScript, Material UI 5.0 Typescript React Пользовательская тема, Как расширить тему Material-UI с помощью Typescript?, но не повезло.
Но здесь он работает для версии JavaScript: Можете ли вы добавить дополнительный цвет в Material UI?. Но я не могу следить за версией машинописного текста.
Поскольку файлов несколько, я создал для них песочницу. https://codesandbox.io/s/async-rgb-9m6ulo?file=/src/App.tsx
Как я могу это сделать?





Добавьте appcolor как возможный тип в свой ButtonPropsType.ts
type ButtonPropsType = {
color?:
| "inherit"
| "primary"
| "secondary"
| "success"
| "error"
| "info"
| "warning"
| "appcolor"; //<-- Here
disabled?: boolean;
variant?: "text" | "outlined" | "contained";
};
В качестве альтернативы, если вы хотите динамически добавлять параметры по мере необходимости, у mui есть интерфейс для этого.
ButtonPropsTypes.tsimport { ButtonProps } from "@mui/material";
type ButtonPropsType = {
color?: ButtonProps["color"];
disabled?: boolean;
variant?: "text" | "outlined" | "contained";
};
export default ButtonPropsType;
createPalette.d.tsimport * as createPalette from "@mui/material/styles/createPalette";
declare module "@mui/material/styles/createPalette" {
interface PaletteOptions {
appcolor?: PaletteColorOptions;
}
interface Palette {
appcolor: PaletteColor;
}
}
declare module "@mui/material" {
interface ButtonPropsColorOverrides {
appcolor;
}
}
@GrandWhiz Смотрите здесь, Песочница для кода
Вот это да. Большое спасибо, братан. Я застрял в этом на два дня. И просто любопытно, будет ли он работать для нескольких цветов?
Пока вы объявляете его во всех модулях в createPalette.d.ts и делаете те же шаги, что и при добавлении цвета приложения.
Не повезло братан. Можете ли вы проверить ссылку на песочницу, работает ли она у вас? у меня не работает :'(