Добавить объект переменной пользовательской темы в createMuiTheme () - PullRequest
1 голос
/ 30 сентября 2019

По умолчанию тема пользовательского интерфейса материала представляет собой комбинацию нескольких предварительно определенных объектов, таких как typography: {...}, palette: {...} и т. Д.

Возможно добавить пользовательский объект в эту настройку и при этом использовать createMuiTheme?

Так, например, объектом темы станет:

const theme = {
  palette: {
    primary: '#000'
  },
  typography: {
    body1: {
      fontFamily: 'Comic Sans'
    }
  },
  custom: {
    myOwnComponent: {
      margin: '10px 10px'
    }
  }
}

1 Ответ

1 голос
/ 30 сентября 2019

Да, это работает просто отлично. Material-UI выполняет глубокое слияние своих значений по умолчанию с объектом, который вы предоставляете, с особой обработкой для ключей, которые объединяются более сложным способом (например, palette, typography и некоторые другие),Любые нераспознанные ключи будут проходить без изменений.

Ниже приведен рабочий пример:

import React from "react";
import ReactDOM from "react-dom";

import {
  useTheme,
  createMuiTheme,
  MuiThemeProvider
} from "@material-ui/core/styles";
import Button from "@material-ui/core/Button";
import Typography from "@material-ui/core/Typography";
const theme = createMuiTheme({
  palette: {
    primary: {
      main: "#00F"
    }
  },
  typography: {
    body1: {
      fontFamily: "Comic Sans"
    }
  },
  custom: {
    myOwnComponent: {
      margin: "10px 10px",
      backgroundColor: "lightgreen"
    }
  }
});
const MyOwnComponent = () => {
  const theme = useTheme();
  return (
    <div style={theme.custom.myOwnComponent}>
      Here is my own component using a custom portion of the theme.
    </div>
  );
};
function App() {
  return (
    <MuiThemeProvider theme={theme}>
      <div className="App">
        <Button variant="contained" color="primary">
          <Typography variant="body1">
            Button using main theme color and font-family
          </Typography>
        </Button>
        <MyOwnComponent />
      </div>
    </MuiThemeProvider>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

Edit custom properties in theme

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...