Как использовать собственные цвета в качестве реквизита с помощью mui v5 react typescript?

Я хочу добавить одно или несколько пользовательских значений цветовых реквизитов в компонент кнопки MUI. Я следовал за https://javascript.plainenglish.io/extend-material-ui-theme-in-typescript-a462e207131f, что почти сработало. Я использовал пользовательские свойства, созданные в файле createPalette.d.ts, но когда я пытаюсь использовать их в пользовательском компоненте, возникает ошибка, и я не могу использовать пользовательский цвет.

Возникла ошибка:

Как использовать собственные цвета в качестве реквизита с помощью mui v5 react typescript?

Я следовал за Невозможно настроить типы цветовой палитры в теме 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

Как я могу это сделать?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте appcolor как возможный тип в свой ButtonPropsType.ts

type ButtonPropsType = {
  color?:
    | "inherit"
    | "primary"
    | "secondary"
    | "success"
    | "error"
    | "info"
    | "warning"
    | "appcolor"; //<-- Here
  disabled?: boolean;
  variant?: "text" | "outlined" | "contained";
};

В качестве альтернативы, если вы хотите динамически добавлять параметры по мере необходимости, у mui есть интерфейс для этого.

ButtonPropsTypes.ts

import { ButtonProps } from "@mui/material";

type ButtonPropsType = {
  color?: ButtonProps["color"];
  disabled?: boolean;
  variant?: "text" | "outlined" | "contained";
};

export default ButtonPropsType;

createPalette.d.ts

import * 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;
  }
}

Не повезло братан. Можете ли вы проверить ссылку на песочницу, работает ли она у вас? у меня не работает :'(

Grand Whiz 30.03.2022 07:26

@GrandWhiz Смотрите здесь, Песочница для кода

Cody Duong 30.03.2022 07:47

Вот это да. Большое спасибо, братан. Я застрял в этом на два дня. И просто любопытно, будет ли он работать для нескольких цветов?

Grand Whiz 30.03.2022 08:19

Пока вы объявляете его во всех модулях в createPalette.d.ts и делаете те же шаги, что и при добавлении цвета приложения.

Cody Duong 30.03.2022 08:22

Другие вопросы по теме