μ€λ λ€λ₯Έ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ 체 Material-UI 4.0.0 μμ 곡κ°μ μ¬μ€μ νμ¬ μ½μ΄μ μ€νμΌμ λͺ¨λ μ΅μ 4.0.1λ‘ λ§μ΄κ·Έλ μ΄μ νλ €κ³ νμ΅λλ€.
ThemeProvider
λ₯Ό μ¬μ©νλ €κ³ νλ©΄ TypeError theme.spacing is not a function
λ°μ΅λλ€.
ν
λ§κ° μλνλ κ²μλ³΄κ³ μΆμ΅λλ€. theme.spacing
μ΄ λ§μ€ν° λΈλμΉμ λ€μ λΈλμΉ λͺ¨λμμ μ¬μ©λλ€λ μ¬μ€μ νΌλμ€λ¬μμ μ΄κ²μ΄ κ° κΈΈμΈ κ² κ°μ΅λλ€.
μμ μ€λ₯ μ°Έμ‘°
λ§ν¬ : https://codesandbox.io/s/materialui-style-issue-rk8n0
μμ ν μλ‘μ΄ μμ© νλ‘κ·Έλ¨μ μμνκ³ Material-UIμ λͺ¨λ μ€νμΌ κΈ°λ₯μ ν¨κ» νμ
νλ €κ³ ν©λλ€. μ¦, style
λͺ¨λμ 4.0.1λ‘ λ§μ΄κ·Έλ μ΄μ
νκΈ° μ μλ κ·Έλ° λ¬Έμ κ° μμκΈ° λλ¬Έμ 4.x 릴리μ€κ° λΆμμ ν μ§ λλ 무μμΈμ§ νμ€νμ§ μμ΅λλ€.
| κΈ°μ | λ²μ |
| -------------- | --------- |
| Material-UI | v4.0.1 |
| λ°μ | 16.0.6 |
| λΈλΌμ°μ | FF / Chrome μ΅μ |
| TypeScript | -|
@keul μ½μ΄μ μ€νμΌμ μ°¨μ΄μ μ https://material-ui.com/customization/default-theme/#material -ui-core-styles-vs-material-ui-styles.
κ°μ¬ν©λλ€ @oliviertassinari.
Material-UI μ€νμΌμ @ material-ui / styles npm ν¨ν€μ§λ‘ ꡬλλ©λλ€. Reactλ₯Όμν μ€νμΌλ§ μ루μ μ λλ€. μ΄ μ루μ μ 격리λμ΄ μμΌλ©° κΈ°λ³Έ Material-UI ν λ§μ λν μ§μμ΄ μμ΅λλ€. Reactμ 컨ν μ€νΈμ ν λ§λ₯Ό 체κ³μ μΌλ‘ μ½μ ν νμλ₯Ό μμ κΈ° μν΄ μ€νμΌ λͺ¨λ (makeStyles, withStyles λ° styled)μ κΈ°λ³Έ Material-UI ν λ§λ‘ λνν©λλ€.
μμ§ν λ§ν΄μ μ¬κΈ°μ μμ μ μ΄ν΄νμ§ λͺ»νλ©° μ΄κ²μ΄ λ¬Έμ μ μ΄λ»κ² κ΄λ ¨λμ΄ μλμ§ μ΄ν΄νμ§ λͺ»ν©λλ€. μ¦, core/styles
μμ κ°μ Έμ¬ λ μ΄λ―Έ λ°°μ‘ λμκΈ° λλ¬Έμ ThemeProviderκ° νμνμ§ μμ΅λλ€.
μΆκ° 컨ν
μ€νΈλ₯Ό μ 곡νκΈ° μν΄ λ΄ μ½λλ core
4.0.0 λ° styles
3.0.0-alpha.10μ μ¬μ©νμ¬ μλνμ΅λλ€.
4.0.1λ‘ λ§μ΄κ·Έλ μ΄μ
ν ν μ€λ μμΉ¨μ λ¬Έμ κ° λ°μνκΈ° μμνμ΅λλ€.
μ΄μ ν¨ν€μ§ μ κΈ λ²μ μΌλ‘ λΉ λ₯΄κ² λμκ° μ μμ§λ§ ν° κ·Έλ¦Όμ μ»κ³ μΆμ΅λλ€.
@keul μ’μ, μλ§λ λ€μμ΄ λ λͺ νν΄μ§ κ²μ λλ€. ν΅μ¬ κ΅¬μ± μμμ νΈνλμ§ μλ μ ν λ§λ₯Ό μ½μ νκ³ μμ΅λλ€. createMuiThemeλ₯Ό μ¬μ©ν΄μΌν©λλ€.
import { createMuiTheme } from "@material-ui/core";
const theme = createMuiTheme({
spacing: 4,
palette: {
primary: {
main: "#007bff",
},
}
});
@oliviertassinari μ ... κ°μ¬ν©λλ€. μ΄κ²μ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
λ¬Έμμμμ΄ μμ μ½λλ₯Ό 볡μ¬νλ€κ³ νμ ν©λλ€ . https://material-ui.com/styles/advanced/ μμ μ°Ύμ κ²κ³Ό λμΌν λ°©λ²
μμ μ£μ‘ν©λλ€!
https://material-ui.com/styles/xμ λͺ¨λ κ²μ λ¨Έν°λ¦¬μΌ λμμΈκ³Ό κ΄λ ¨μ΄ μμ΅λλ€. Reactλ₯Όμν μ€νμΌλ§ μ루μ μ λλ€.
μ£μ‘ν©λλ€. μ¬μ ν μ΄ν΄ν μ μμ΅λλ€.
μ°λ¦¬λ λ³΄λΌ μ theme
μ€νμΌμ μΈμλ‘, κ·Έλ¦¬κ³ νμ¬ ν¬μ₯ withstyles
? λ€μκ³Ό κ°μ΄.
const styles = theme => {({
root: {
// JSS uses px as the default units for this CSS property.
padding: theme.spacing(2), // = 8 * 2
},
})};
ν λ§λ₯Ό μ€νμΌμ λν μΈμλ‘ λ³΄λ΄κ³ withstylesλ‘ λν ν μ μμ΅λκΉ? λ€μκ³Ό κ°μ΄.
@ByronHsu μ, @material-ui/core/styles
μμ κ°μ Έ μ€κ±°λ createMuiTheme()
λ§λ ν
λ§λ₯Ό μ½μ
νλ κ²½μ°μ
λλ€.
κ·Έλ¬λ theme.spacing
λ°ννλ κ²μ ν¨μκ° μλλλ€.
@ByronHsu 볡μ νμ΄ μμ΅λκΉ?
λ¬Έμ λ₯Ό λ°κ²¬ν΄μ μ£μ‘ν©λλ€.
import { withStyles } from '@material-ui/styles';
λ₯Ό import { withStyles } from '@material-ui/core/styles';
λ‘ λ³κ²½νλ©΄ λͺ¨λ κ²μ΄ μ μλν©λλ€.
κ°μ¬!
μ΄ λ¬Έμ λ λ°μνκ³ μμΌλ©°
import { makeStyles, Theme } from "@material-ui/core/styles";
const useStyles = makeStyles((theme: Theme) => ({
icon: {
marginRight: theme.spacing(1)
}
}));
μ΄ κ΅¬μ± μμλ <ThemeProvider />
λνλ©λλ€.
λμ μ¬μ©νλ©΄ λμΌν λ¬Έμ κ° λ°μν©λλ€.
import { makeStyles } from "@material-ui/styles";
import { Theme } from "@material-ui/core/styles";
const useStyles = makeStyles((theme: Theme) => ({
icon: {
marginRight: theme.spacing(1)
}
}));
λλ μ»λ€:
TypeError: theme.spacing is not a function
λͺ¨λ MUI ν¨ν€μ§λ μ΅μ λ§μ€ν° λΈλμΉμ λλ€.
μ κ²½ μ°μ§ λ§, μ μΈ μ€μ. μ ν
λ§λ₯Ό createMuiTheme
λ‘ κ°μΈλ κ²μ μμμ΅λλ€. λμ κΈ°λ³Έ κ°μ²΄λ₯Ό λ°ννμ΅λλ€.
μ¬κΈ°λ κ°λ€
μΈλΆ ν λ§κ° μμ λ μ½λλ₯Ό μ μΈνκ³ μμλλ‘ λͺ¨λ μμ μ μννλ©΄μ΄ λ¬Έμ κ° λνλ©λλ€. μλ₯Ό λ€λ©΄ :
ν΄μ :
<MuiThemeProvider theme={outer => ({...outer, ...theme})}>...</MuiThemeProvider>
곡μ₯:
<MuiThemeProvider>
<MuiThemeProvider theme={outer => ({...outer, ...theme})}>...</MuiThemeProvider>
</MuiThemeProvider>
μ΄ μ¬κ±΄μ λν κ²½κ³ κ° μμ΅λλ€. κ·Έλλ μ¬μ ν μλνκ±°λ μ μ΄λ ν΄λΉ λ Όλ¦¬λ₯Ό μ 곡λ ν¨μμ λ¨κ²¨ λμ΄μΌ ν κ² κ°μ΅λλ€.
μμ μ΄λ
marginRight: theme.spacing(1)
κ·Έκ²μ λ³κ²½
marginRight: theme.spacing.unit
μ΄κ²μ λμκ²λ λ¬Έμ μ λλ€. κ° μ체λ₯Ό λ‘κΉ νκ³ μκ³ μλ μ€μ΄κΈ° λλ¬Έμ μ ν μ€λ₯ μΈ κ² κ°μ§λ§ next.jsλ μ‘΄μ¬νμ§ μλλ€λ μ€λ₯λ₯Ό λμ§λλ€. μ€λ¨ μ λ μμ΅λλ€.
λ¬Έμ λ₯Ό λ°κ²¬ν΄μ μ£μ‘ν©λλ€.
import { withStyles } from '@material-ui/styles';
λ₯Όimport { withStyles } from '@material-ui/core/styles';
λ‘ λ³κ²½νλ©΄ λͺ¨λ κ²μ΄ μ μλν©λλ€.
κ°μ¬!
κ°μ¬ν©λλ€ @ByronHsu
κ·Έκ²μ μλ
κ°μ₯ μ μ©ν λκΈ
λ¬Έμ λ₯Ό λ°κ²¬ν΄μ μ£μ‘ν©λλ€.
import { withStyles } from '@material-ui/styles';
λ₯Όimport { withStyles } from '@material-ui/core/styles';
λ‘ λ³κ²½νλ©΄ λͺ¨λ κ²μ΄ μ μλν©λλ€.κ°μ¬!