Bonjour, Habr!Donc, material-ui est le framework de reactJS fournissant des solutions prêtes à l'emploi pour un développement web rapide et assez simple.Material-UI est une bibliothèque assez importante, où la partie clé des composants React et du style est @ material-ui / core (l'objectif de son utilisation devrait être un projet assez important).Ce didacticiel n'inclut pas l'utilisation avancée de material-ui. Ceci est un mini manuel pour styliser les composants.L'utilisation de composants matériels n'est vraiment pas difficile, mais il existe des nuances dans l'utilisation du style. Ce sera en fait discuté.Considérer ce qui suit
- JSS et un peu de syntaxe;
- Stylisation de classe réagissent, composants matériels;
- Stylisation du fonctionnel en utilisant des crochets de réactif, des composants matériels;
- Styling par styledComponent react, composants matériels;
- Fournisseur de thème;
- Remplacer les composants matériels;
Allez chat!
1. JSS et un peu de syntaxe
JSS (bibliothèque) - style css en langage Javascript dans un style déclaratif pesant 6kb, hors installation de plugins. JSS n'est pas compilé en style en ligne et peut être réutilisé, évitant les conflits, en générant des noms de classe uniques. Il a la capacité de fonctionner côté serveur dans nodejs et possède l'extension [.js]. Dans jss, il n'y a pas de restriction sur la définition des styles pour les pseudo-sélecteurs ou pseudo-éléments et similaires. Décrit par jss dans le style de camelCase. L'une des principales caractéristiques de jss est la possibilité d'une approche architecturale dans la description des styles.Oui, et cette chose est utilisée dans la matière-ui comme sémantique.Pour commencer à utiliser jss, vous devez appeler sa méthode spécifique, ayant retourné en paramètre un objet de styles, qui renverra une fonction, en appelant laquelle nous obtiendrons un générateur de classes jss, par exemple:/ src / components / JssComponent
JssComponent.jsimport React from "react";
import useStyles from "./style";
export default function JssComponent() {
// jss
const classes = useStyles();
return (
<div className={classes.root}>
<h1>That's JssComponent</h1>
<h2 className="basic_h2">I use JSS</h2>
<div className={classes.content_div}>
Any Text
</div>
</div>
);
}
style.js
import { createUseStyles } from "react-jss";
const rootStyle = {
width: 400,
border: "1px solid grey",
margin: "0px auto",
padding: 15
};
const fontStyle = {
fontWeight: "bold",
fontStyle: "italic"
};
const useStyles = createUseStyles({
root: {
...rootStyle,
"& h1": {
textAlign: "center",
color: "purple"
},
"& .basic_h2": {
textAlign: "right",
color: "green",
cursor: "pointer",
"&:hover": {
color: "purple"
}
}
},
content_div: {
textAlign: "justify",
...fontStyle
}
});
export default useStyles;
2. La classe de style réagit, les composants matériels
React n'a pas abandonné la prise en charge de l'écriture d'interfaces sur les classes. Les styles suivants sont utilisés dans les composants de matériau de classe:/ src / components / ClassComponent
ClassComponent.jsimport React from "react";
import { withStyles } from "@material-ui/core/styles";
import Button from "@material-ui/core/Button";
import styles from "./style";
class ClassComponent extends React.Component {
render() {
const { classes } = this.props;
return <Button className={classes.button}>ClassComponent</Button>;
}
}
//
export default withStyles(styles)(ClassComponent);
style.js
const styles = {
button: {
backgroundColor: "grey",
border: 0,
borderRadius: 3,
boxShadow: "0 3px 5px 2px",
color: "black",
height: 48,
padding: "0 30px",
margin: 10
}
};
export default styles;
3. Stylisation du fonctionnel à l'aide de crochets de composants réactifs et matériels
Depuis la version 16.8 de React, une nouvelle opportunité est apparue en écrivant des interfaces sur les hooks:/ src / components / HookComponent
HookComponent.jsimport React from "react";
import Button from "@material-ui/core/Button";
import useStyles from "./style";
const HookComponent = props => {
//
const classes = useStyles();
return <Button className={classes.button}>HookComponent</Button>;
};
export default HookComponent;
style.js
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles({
button: {
backgroundColor: "grey",
border: 0,
borderRadius: 3,
boxShadow: "0 3px 5px 2px",
color: "black",
height: 48,
padding: "0 30px",
margin: 10
}
});
export default useStyles;
4. Styling avec styledComponent react, composants matériels
StyledComponent - le principe de stylisation des composants sans méthode qui renvoie une fonction pour générer des classes./ src / components / StyledComponent
StyledComponent.jsimport React from "react";
//
import { styled } from "@material-ui/core/styles";
//
import Button from "@material-ui/core/Button";
import styles from './style';
//
const ButtonComponent = styled(Button)({ ...styles });
export default function StyledComponent() {
return <ButtonComponent>StyledComponent</ButtonComponent>;
}
style.js
const styles = {
backgroundColor: "grey",
border: 0,
borderRadius: 3,
boxShadow: "0 3px 5px 2px",
color: "black",
height: 48,
padding: "0 30px",
margin: 10
};
export default styles;
5. Fournisseur de thème.
Le thème est la fourniture de styles par défaut pour un projet, ou une partie de celui-ci, étant donné l'imbrication des composants, conceptuellement similaire au contexte dans React. Material-ui a déjà un objet prêt à l'emploi de thème par défaut, mais vous pouvez le créer vous-même pour répondre à vos besoins, après l'avoir préalablement rendu disponible via le fournisseur, de cette façon, vous fournirez une fonction avec l'objet de thème comme argument, pour les méthodes matérielles d'écriture de styles, par exemple :/ src / components
App.jsimport React from 'react';
import { ThemeProvider } from "@material-ui/core/styles";
import ThemedComponent from './ThemedComponent/ThemedComponent';
import theme from './theme';
function App() {
return (
<ThemeProvider theme={theme}>
< ThemedComponent />
</ThemeProvider>
);
}
export default App;
theme.js
const theme = {
button: {
backgroundColor: "grey",
border: 0,
borderRadius: 3,
boxShadow: "0 3px 5px 2px",
color: "black",
height: 48,
padding: "0 30px"
}
};
export default theme;
/ src / components / ThemedComponent
ThemedComponent.jsimport React from "react";
import useStyles from "./style";
const ThemedComponent = props => {
//
const classes = useStyles();
return <button className={classes.button}>ThemedComponent</button>;
};
export default ThemedComponent;
style.js
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles(theme => {
return {
button: { ...theme.button, margin: 10 }
};
});
export default useStyles;
6. Remplacement des composants matériels
Dans material-ui, chaque composant a déjà les styles correspondants, c'est-à-dire que l'importation de n'importe quel composant matériel fournira un composant déjà stylisé avec les classes disponibles. Création d'un thème à l'aide de l'API de matériau spécial - createMuiTheme peut non seulement fournir un thème, mais également remplacer les classes par défaut spécifiées de composants de matériau à l'aide de la propriété de substitution spéciale , par exemple:/ src / components
App.jsimport React from 'react';
import { ThemeProvider } from "@material-ui/core/styles";
import CreatedThemeComponent from './CreatedThemeComponent/CreatedThemeComponent';
import createdTheme from './createdTheme';
function App() {
return (
<ThemeProvider theme={createdTheme}>
<CreatedThemeComponent />
</ThemeProvider>
);
}
export default App;
/ src / components
createdTheme.js
import { createMuiTheme } from "@material-ui/core/styles";
const createdTheme = createMuiTheme({
overrides: {
MuiButton: {
root: {
color: "red",
border: "1px solid grey",
margin: 10
}
}
}
});
export default createdTheme;
/ src / components / CreatedThemeComponent
CreatedThemeComponent.jsimport React from "react";
import { Button } from "@material-ui/core";
const CreatedThemeComponent = props => {
return <Button>CreatedThemeComponent</Button>;
};
export default CreatedThemeComponent;
Sommaire:- JSS et ses fonctionnalités;
- Le style JSS réagit, les composants du matériau à travers l'api material-ui;
Code source: https://gitlab.com/ImaGadzhiev/material-style-components