css ํด๋์ค ์ด๋ฆ ์ ์๋ ์ผ๋ถ ๊ตฌ์ฑ ์์์ ๋ํด ์ค๋ณต๋ฉ๋๋ค. ์ ๊ฒฝ์ฐ์๋ MuiIconButton
๋ฐ MuiModal
๋ํด ์ค๋ณต๋ฉ๋๋ค (๋ด ๋๋ฒ๊น
์์ ์ถ์ธก)-ํ์ฌ ๋์ ํ์ธ
ํด๋์ค ์ด๋ฆ์ ๊ตฌ์ฑ ์์๊ฐ์ ์ค๋ณต๋์ง ์์์ผํฉ๋๋ค.
๋ด ๋ฒํผ ์คํ์ผ :
ํด๋์ค๊ฐ ์ค๋ณต๋ฉ๋๋ค.
์คํ์ผ ์ ์ :
๊ฐ๋ฐ ๋ชจ๋์์ ์๋ ์ค์
๋๋ค.
๋ด ๋ฒํผ ์คํ์ผ :
์ ์๋ฅผ ์ฐพ์์ต๋๋ค.
๋ชจ๋ฌ์์ :
๋ฌธ์ ๋ฅผ ์ฌํ ํ ์ ์๋๋ก ํ๊ฒฝ์ ์ค๋น ํ ์ ์์ง๋ง ์ง๊ธ์ ์ฌ๊ธฐ์๋ณด๊ณ ํ๊ณ ์ถ์์ต๋๋ค.
ํ๋ก๋์
ํ๊ฒฝ์์ ๋ด ์ ํ๋ฆฌ์ผ์ด์
์ ์ถ์ํ๋ ค๊ณ ํฉ๋๋ค.
| ๊ธฐ์ | ๋ฒ์ |
| -------------- | --------- |
| Material-UI | 1.0.0-beta.10 |
| ๋ฐ์ | 15.6.1 |
| ๋ธ๋ผ์ฐ์ | ๋ชจ๋ |
| ์นํฉ | ^ 3.3.0 |
๋ฌธ์ ๊ฐ ๋ ์์๋ ํํธ๊ฐ ํ์ํฉ๋๋ค. ์ด๋์์๋ withStyles
์๋ฃจ์
์ ์ฌ์ฉํ์ง ์๊ณ ์์ต๋๋ค. ์คํ์ผ ์ฌ์ ์์ ์คํ์ผ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์ด๋ฏธ ๋ณด์์ต๋๋ค. ํญ์ ์ค๋ณต ๋ className ์์ฑ๊ธฐ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋์์ต๋๋ค. ๋๋ ๋ฒ์ ์์ด๋ ๋ ์ด์ ๋์ธ ์ ์์ต๋๋ค.
์ง๊ธ์ ์คํ ๋ถ๊ฐ๋ฅํ ๋ฌธ์ ๋ก ํด๊ฒฐํ๊ฒ ์ต๋๋ค. ๋ณต์ ์ฌ๋ก๊ฐ ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
@oliviertassinari ๋ฌธ์ ๋ฅผ ์ฌํ ํ ์์์์ต๋๋ค. ์ฌ๊ธฐ์ ์นํฉ ๋น์ ๋๋ค - https://www.webpackbin.com/bins/-KuO6ia3h-JDpBOJncZ3
์ ๊ฒฝ์ฐ์๋ 2 ๊ฐ์ ๋ค๋ฅธ div์ ๋
๋ฆฝ์ ์ผ๋ก ๋ง์ดํธ ๋ 2 ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
๋ฃจํธ๊ฐ ์์ต๋๋ค. ๋ ๋ค _jss_์์ insertionPoint
๋ฅผ ์ฌ์ ์ํ๊ธฐ ์ํด JssProvider
๋ก ๋ํ ๋ ๋์ผํ ์ฌ์ง UI ThemeProvider
insertionPoint
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
createGenerateClassName
ํจ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์นด์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ์ ํ ํด๋์ค ์ด๋ฆ์ ๊ฐ์ต๋๋ค.
export default function createGenerateClassName(): generateClassName {
let ruleCounter = 0;
return (rule: Rule, sheet?: StyleSheet): string => {
ruleCounter += 1;
warning(
ruleCounter < 1e10,
[
'Material-UI: you might have a memory leak.',
'The ruleCounter is not supposed to grow that much.',
].join(''),
);
if (process.env.NODE_ENV === 'production') {
return `c${ruleCounter}`;
}
if (sheet && sheet.options.meta) {
return `${sheet.options.meta}-${rule.key}-${ruleCounter}`;
}
return `${rule.key}-${ruleCounter}`;
};
}
๊ทธ๋ฆฌ๊ณ ๋ด ์คํฌ๋ฆฐ ์ท์ ์ด๋ค ์ด์ ๋ก ์นด์ดํฐ๊ฐ ๋ณต์ ๋์์์ ํ์ธํฉ๋๋ค.
๋์์ด ํ์ํฉ๋๋ค. ๋๋ ์ง๊ธ ๋ด๊ฐ ๋ญ ์๋ชปํ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค.
@darkowic ์๋ก ๋ค๋ฅธ ๋ฐ์ ํธ๋ฆฌ๊ฐ์ jss ์ธ์คํด์ค๋ฅผ ๊ณต์ ํด์ผํฉ๋๋ค. ๋น์ ์ ๊ทธ๋ฌํ ๋ณํ์ ๋ฅ์ํด์ผํฉ๋๋ค.
@oliviertassinari ์ ์ฌ์ฉ์ ์ ์ ThemeProvider
<JssProvider registry={context.sheetsRegistry} jss={context.jss}>
<MuiThemeProvider
theme={context.theme}
sheetManage={context.sheetsManager}
{...props}
/>
</JssProvider>
๋๋ ์ด๊ฒ์ผ๋ก ๋ชจ๋ ๋ฐ์ ํธ๋ฆฌ๋ฅผ ๊ฐ์ผ๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ด์ด์ผํฉ๋๋ค.
๋ฌผ๋ก ์
๋๋ค. ์ง๊ธ๊น์ง ์๊ณ ์๋ ๊ฒ์ ์์ฝ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ๋ค์ค ๋ฐ์ ๋ ๋๋ง ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ฆ์ ๋ฐ์ํฉ๋๋ค. jss ๊ณต๊ธ์๋ ๊ฐ ํธ๋ฆฌ์ ๋ํด ํ๋์ฉ ๋ ๊ฐ์ ํด๋์ค ์ด๋ฆ ์์ฑ๊ธฐ๋ฅผ ๋ง๋ค ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ํด๋์ค ์ด๋ฆ ์ถฉ๋๋ก ๋๋ฉ๋๋ค.
@kof ํด๋์ค ์ด๋ฆ ์์ฑ๊ธฐ๋ฅผ ํ์ฉํ๊ธฐ ์ํด react-jss
์์ JssProvider๋ฅผ ํ์ฅํด์ผํฉ๋๊น?
ํด๋ผ์ด์ธํธ ์ธก ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ : ๊ณ ์ ํ createGenerateClassName
๋ง๋ค๊ณ ruleCounter
๋ํผ ํจ์ ์ธ๋ถ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
import warning from 'warning';
// Returns a function which generates unique class names based on counters.
// When new generator function is created, rule counter is reset.
// We need to reset the rule counter for SSR for each request.
//
// It's an improved version of
// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js
//
// Copied from material-ui due to issue https://github.com/callemall/material-ui/issues/8223
// This counter is moved outside from `createGenerateClassName` to solve the issue
let ruleCounter = 0;
export default function createGenerateClassName() {
return (rule, sheet) => {
ruleCounter += 1;
warning(
ruleCounter < 1e10,
[
'Material-UI: you might have a memory leak.',
'The ruleCounter is not supposed to grow that much.'
].join('')
);
if (process.env.NODE_ENV === 'production') {
return `c${ruleCounter}`;
}
if (sheet && sheet.options.meta) {
return `${sheet.options.meta}-${rule.key}-${ruleCounter}`;
}
return `${rule.key}-${ruleCounter}`;
};
}
์ข์ ๊ฒ, ์ฐ๋ฆฌ๋ ์๋ฒ์์ ๊ทธ๋ฌํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ฐ์ง๊ณ ์์๊ณ ์ด๋ฏธ ๋ฌธ์์์ ๋๋ดํ ํํธ๋ฅผ ๊ณํํ๊ณ ์์์ต๋๋ค. # 5 ์ฐธ์กฐ
๊ทธ๋ฌ๋ ์ด์ ์ค์ ๋ก 2 ๊ฐ์ ๋ณ๋ ฌ ์คํ ๊ณต๊ธ์๋ฅผ ์ง์ํ ์ข์ ์ด์ ๋ฅผ ์ฐพ์์ต๋๋ค.
์ฌ๋ฌ ๊ฐ์ ๋ณ๋ ฌ JssProvider๊ฐ ํ์๋กํ๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋์ง ์กฐ์ฌํด์ผํฉ๋๋ค. ๋ง์ฝ ์๋ค๋ฉด ๊ทธ๊ฒ์ ์ง์ํ ๋ฌด์ธ๊ฐ๋ฅผ ์๊ฐํด์ผํฉ๋๋ค.
@kof ํด๋ผ์ด์ธํธ ์ธก์์ ์ฌ๋ฌ ๋ณ๋ ฌ JssProvider์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ฐฉ๊ธ ์ฐพ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ ๋ ์๋ฃจ์ ์ ๊ตฌํ์ด ๊ฐ๋จํ๋ค๊ณ ์๊ฐํฉ๋๋ค. :).
๋ํผ ํจ์ ์ธ๋ถ๋ก ruleCounter ์ด๋
์ด๊ฒ์ ์๋ฒ์์ ruleCounter๊ฐ ์ฌ์ค์ ๋์ง ์์์ ์๋ฏธํฉ๋๋ค. ์ฐ๋ฆฌ๋ ํ ์ ์์ต๋๋ค.
์๋ฒ ์ธก์์ JssProviders๋ ๋ฐ๋์ ๋ฐ์ ํธ๋ฆฌ์ ๋์ ๋น๋๊ธฐ ๋ ๋๋ง์ ์ง์ํด์ผํฉ๋๋ค (๊ฐ๋ ฅํ ํ์). ๊ทธ๋ฌ๋ ํ์ฌ ๊ตฌํ์์๋ ์ด๋ฏธ ์ง์๋ฉ๋๋ค. :)
@darkowic ๊ธฐ๋ณธ ์คํ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ํ๋ค. ์ด ์ถ๊ฐ ์ ์ฐ์ฑ์ผ๋ก ๋ ์ํ ์ ์์ต๋๋ค. ํด๋์ค ์ด๋ฆ ์์ฑ๊ธฐ ์ธ์คํด์ค๋ฅผ ํ์ฉํฉ๋๋ค.
๋ํ ๋์ผํ ์๋ ํฌ์ธํธ์ ๋ํ ์์ฒญ์ ํญ์ ๋์ผํ ํด๋์ค ์ด๋ฆ์ผ๋ก ์๋ตํด์ผํฉ๋๋ค.
@kof ํด๋์ค ์ด๋ฆ ์์ฑ๊ธฐ๋ฅผ ๋ฐ์๋ค์ด ๊ธฐ ์ํด react-jss์์ JssProvider๋ฅผ ํ์ฅํด์ผํฉ๋๊น?
import {createGenerateClassName} from 'react-jss'
const generateClassName = createGenerateClassName()
<JssProvider generateClassName={generateClassName}>
<App1 />
</JssProvider>
<JssProvider generateClassName={generateClassName}>
<App2 />
</JssProvider>
<JssProvider classNamePrefix="app-1">
<App1 />
</JssProvider>
<JssProvider classNamePrefix="app-2">
<App2 />
</JssProvider>
์ฅ์ 1 :
ํ๋ก 2 :
์ค์ ๋ก classNamePrefix
๋ฐ generateClassName
์ํ์ ๋ชจ๋ ๊ฐ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค. ์ฒซ ๋ฒ์งธ๋ ๋๋ฒ๊น
์ฉ์ด๊ณ ๋ ๋ฒ์งธ๋ ํด๋์ค ์ด๋ฆ์ ์๋ํ ๋ ๊ณ ์ ์ฑ์
๋๋ค.
https://github.com/facebookincubator/create-react-app/issues/3173 (๋ฐ ์ฐ๊ฒฐ๋ ์ถ์ ๋ ํ ์คํธ ์ฌ๋ก )์ ํตํด์ด ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค.
์ ๊ฒฝ์ฐ์๋ material-ui (๋์ผํ ๋ฒ์ )๋ ์ฌ์ฉ ํ๋ ์ฑ์ ์์ฌ UI ์ข ์ ๊ตฌ์ฑ ์์ (v1.0.0-beta.11)๊ฐ ํฌํจ๋์์ต๋๋ค. ๊ฐ๋ฐ ์ค์๋ ์ ๋๋ก ์๋ํ์ง๋ง ํ๋ก๋์ ์์๋ ํด๋์ค ์ด๋ฆ ์ถฉ๋๋ก ์ธํด ๋ ์ด์์์ด ์์๋ฉ๋๋ค.
์ด๊ฒ์ด "๋ค์ค ๋ฐ์ ๋ ๋๋ง ํธ๋ฆฌ"์ ํด๋นํ๋์ง ํ์คํ์ง ์๊ณ var ruleCounter = 0;
์ด์ ์ createGenerateClassName()
var ruleCounter = 0;
์ด๋ํ์ฌ ๋ฌธ์ ๋ฅผ _ ํด๊ฒฐํ์ง ๋ชปํ์ง๋ง _ ๋ค์์ ์ฃผ์ ์ฒ๋ฆฌํ์ต๋๋ค. _did_ ์์
:
์ฃ์กํฉ๋๋ค. # 7855๋ฅผ ์ด์์ ๋ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๋ค .๐
์ด ์๊ฒฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก๋์
๋น๋๋ฅผ ์คํํ ๋ ์ง๋ฉด ํ ๋ฌธ์ ๋ฅผ ๋ค๋ฃน๋๋ค.
ํ์ดํ ๋ผ์ธ์์ ์ด์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
react-jss https://github.com/cssinjs/react-jss/pull/155 ์์์ด๋ฅผ ์์ ํด์ผํ๋ PR์ ๋ง๋ค์์ต๋๋ค.
์์ฝํ์.
@darkowic ์ ๋ฌธ์ ๊ทผ๋ณธ ์์ธ์ https://github.com/callemall/material-ui/issues/8223#issuecomment -331076580์ ์ค๋ช ๋์ด ์์ผ๋ฉฐ @kof ์ PR : cssinjs / react-jss # ๋๋ถ์ ์์ ๋ ์์ ์ ๋๋ค. 155 ๋ฐ ํฅํ ์ด๋ฌํ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์๋ก์ด ๊ฒฝ๊ณ : # 8341์ด ์ถ๊ฐ๋ฉ๋๋ค.
@tlvince ์ ๋ฌธ์ ์ฆ์์ ๋์ผํ์ง๋ง ๊ทผ๋ณธ ์์ธ์ด ๋ค๋ฆ ๋๋ค. ๋จ์ผ ๋ฐ์ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ค์น๋ ๋ณต์ ๋ Material-UI ๋ฒ์ ์ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค. ๊ฒฝ๊ณ ๋ฅผ ํ์ธํ๊ณ ์ ํํ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ํ์ ํ ์ ์๋ค๋ฉด ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ์ฌ์ญ์์ค.
@Robophil ์ ๋ฌธ์ ๋ ์คํํ๊ธฐ์๋ ๋๋ฌด ๋ชจํธํฉ๋๋ค.
์ถฉ๋ํ๋ ํด๋์ค ์ด๋ฆ์ด ์๊ณ createGenerateClassName
์ต์
์ ์ ๋์ฌ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ฌ๊ธฐ ์์ ํ๋ฅญํ๊ณ ํฌ๊ด์ ์ธ ๋ฌธ์๋ฅผ ์ฌ์ฉ
@oliviertassinari ์์ฝ ๊ฐ์ฌํฉ๋๋ค!
๋จ์ผ ๋ฐ์ ๋ ๋ ํธ๋ฆฌ์์์ด ๋ฌธ์ ๋ ๋น๋์ ๋ค๋ฅธ ์ฌ์ง UI ๋ฒ์ ์ผ๋ก ์ธํด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ์ข ์์ฑ ํธ๋ฆฌ๋ฅผ ํ์ธํ๊ณ ์ฌ์ฉ์ค์ธ material-ui ๋ฒ์ ์ ํ์ธํ์ญ์์ค.
yarn list | grep material-ui
๋ด webpack ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
module.exports = {
entry: {
FirstComp: path.join(paths.JS, '/components/FirstComponent/MyFirstComp.js'),
SecondComp: path.join(paths.JS, '/components/SecondComponent/MySecondComp.js'),
},
}
์ด ๋ ๊ฐ์ง ๊ตฌ์ฑ ์์์ splitChunks ์ต์
์ ์ฌ์ฉํ์ฌ ๋น๋ ๋ ๊ณตํต ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค.
JSSProvider๋ฅผ ์ฌ์ฉํ์ฌ MyFirstComp ๋ฐ MySecondComp์์ ๊ธฐ๋ณธ ๋ด ๋ณด๋ธ ๊ตฌ์ฑ ์์๋ฅผ ๋ํํ์ต๋๋ค.
๊ณตํต ๊ตฌ์ฑ ์์ ์ฃผ๋ณ์์ JSSProvider๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผํฉ๋๊น?
@Sewdn ๋๋ ๋ํ ๋ค๋ฅธ material-ui ๋ฒ์ ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด className ์ถฉ๋ ๋ฌธ์ ๋ ์ด์ 3.0.0-alpha.1์์๋ @ material-ui / styles์์ makeStyles ๊ฐ ๋ง๋ ํํฌ ๋ฐ useStyles ํํฌ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๊ธฐ ์์ํ์ ๋ ๋ด ์ฑ์์ ๋์
๋์์ต๋๋ค.
๋ํ 3.6.0 ์ธ "@ material-ui / core"๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๊ฐ์๊ธฐ ๋ด ์ฑ ํด๋์ค์ material-ui ํด๋์ค๊ฐ ๋ชจ๋ jss1๋ก ์์ํ์ฌ ๋ณ๋ ฌ๋ก ๊ณ์ฐ๋์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ชจ๋ ๊ฒ์ ๋ค์์ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด jss5๋ฅผ ์ฌ์ฉํ๋ ๋ด ํค๋๋ MuiListItem์ ์๋ก ๋ค์ด jss5๋ก ์คํ์ผ์ ์ง์ ํ์ต๋๋ค.
์ด ์๋ฃจ์ ์ ๋ฐ๋ผ https://github.com/mui-org/material-ui/issues/8223#issuecomment -412349569 @iamhosseindhv์ ์ํด mui-components์ ํด๋์ค์ ac ์ ๋์ฌ๊ฐ ๋ถ๊ณ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
@christiaanwesterbeek ์ค์น ๋จ๊ณ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ์์กด์ฑ ์ฃผ์
์ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ ์์ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ ธ ์ค๊ธฐ ์ ์ install()
ํธ์ถ์ ์คํํด์ผํฉ๋๋ค.
@oliviertassinari ๋๋ ๋น์ ์ด ์ด๋ค ๋จ๊ณ๋ฅผ ์ธ๊ธํ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ํ install()
์ด ๋ฌด์์ ์ผ๋ถ์ด๊ณ ์ด๋์์ ํธ์ถํด์ผํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด์ ๋ํด ๋ ๋ง์ด ์๊ฒ๋์ด ๊ธฐ์์ง๋ง ๋ฌธ์ํ ๋ ์์น๋ฅผ ์์์ผํฉ๋๋ค.
@christiaanwesterbeek https://material-ui.com/css-in-js/basics/#migration -for-material-ui-core-users๋ฅผ ์ฐธ์กฐํ๊ณ ์์ต๋๋ค.
@oliviertassinari ๊ฐ install()
๋ชจ๋ ๊ตฌ์ฑ ์์์ ํ์ผ์์ ํธ์ถ๋์ด์ผํ๋ ๊ฒ์ต๋๊น? ๋ ๋ช
ํํ ์ค๋ช
์ด ํ์ํ ์๋ ์์ต๋๋ค.
๋ด๊ฐ ํ๋ ธ์ ์๋ ์๊ณ ์ค์น๊ฐ ์ถฉ๋์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
To switch from the default style implementation to this newest version, you need to execute the following code before importing any Material-UI's components:
import { install } from '@material-ui/styles';
install();
@oliviertassinari ์ค์น ๋ฐฉ๋ฒ before importing any Material-UI's components
?
๊ฐ์ ธ ์ค๊ธฐ๋ ํญ์ babel ๋ฐ tsc์ ์ํด ์ ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
@zheeeng ES ๋ชจ๋ ๊ฐ์ ธ ์ค๊ธฐ๋ ๋ชจ๋์ ๋งจ ์์ ์ฌ๋ ค์ง๊ณ ์ ์ ๋ ์์๋๋ก ๋ ๊ธฐ์ ์ผ๋ก ํด๊ฒฐ๋ฉ๋๋ค. Material-UI ๋ฌธ์์์ ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉด ํด ์์ต๋๋ค. ํด๊ฒฐ์ฑ
์ ๋ชจ๋ ๊ฒ์ bootstrap.js
๋ชจ๋์ ํจํค์งํ๊ณ ๋จผ์ ๊ฐ์ ธ ์ค๋ ๊ฒ์
๋๋ค.
https://github.com/mui-org/material-ui/blob/cb30b43e9c6cd49f9b16536a125456f5ea3a85c5/docs/src/modules/components/bootstrap.js#L1 -L13
๋ฌธ์ ๊ฐ ์ง์๋๋ฉด ๋ค๋ฅธ ๋ฌธ์ ์ ๋ํ ํ ๋ก ์ผ๋ก ์ด๋ํ์ญ์์ค.
@oliviertassinari ๊ฐ์ ธ ์ค๊ธฐ ์์๋ฅผ ์ฎ๊ฒผ์ต๋๋ค.
// entry index.js
import * as React from 'react'
import * as ReactDOM from 'react-dom'
import CssBaseline from '@material-ui/core/CssBaseline'
import { install } from '@material-ui/styles'
...์
import * as React from 'react'
import * as ReactDOM from 'react-dom'
import { install } from '@material-ui/styles'
import CssBaseline from '@material-ui/core/CssBaseline'
์ฝ๋์์ Cannot read property 'text' of undefined
์ค๋ฅ๋ฅผ๋ณด๊ณ ํฉ๋๋ค. ํ
๋ง ๊ฐ์ฒด๋ฅผ ๊ฒ์ฌํ๋ฉด ๋น์ด ์์ต๋๋ค.
๊ฐ์ ธ ์ค๊ธฐ ์์๋ฅผ ๋ค์ ์ ํํ๋ฉด์ด ๋ถ๋ถ์ด ์ ๋๋ก ์๋ํฉ๋๋ค.
const useStyles = makeStyles(
(theme: Theme) => ({
root: {
flexShrink: 0,
color: theme.palette.text.secondary,
},
}),
)
์ ์ฒด ์์ฉ ํ๋ก๊ทธ๋จ์ <StylesProvider>
๋ํ ํ ๋๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ
์ฝ๋์์
Cannot read property 'text' of undefined
์ค๋ฅ๋ฅผ๋ณด๊ณ ํฉ๋๋ค. ํ ๋ง ๊ฐ์ฒด๋ฅผ ๊ฒ์ฌํ๋ฉด ๋น์ด ์์ต๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๋ค. "@ material-ui / core"๋ฅผ 3.6.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ฑฐ๋ @ material-ui / styles๋ฅผ 3.0.0-alpha.1๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์์ ๋์์ต๋๋ค. ๋๋ ์์๋ค. ๋ ๋ค ๋ ์ํ์ญ์์ค.
๊ทธ๋ฌ๋ makeStyles์ ์ ๋ฌ ๋ ํจ์๊ฐ๋ฐ์ ์ ํํ ํ ๋ง๋ createMuiTheme๋ก ๋ง๋ ํ ๋ง๊ฐ ์๋๋๋ค. ๋์ ๊ธฐ๋ณธ ํ ๋ง๊ฐ ์์ต๋๋ค. ๊ฒฐ๊ตญ ๋ด๊ฐํ๊ฒ ๋ ๊ฒ์ ์ ๋ฌ ๋ ์ด๋ค ์ฃผ์ ์ ์์กดํ์ง ์๋ ๊ฒ์ด ์์ต๋๋ค. ๋์ ์คํ์ผ์ ํ์ํ ๋ชจ๋ ํ์ผ์์ ํ ๋ง๋ฅผ ๊ฐ์ ธ ์์ต๋๋ค.
@christiaanwesterbeek @material-ui/[email protected]
๋ฐ @material-ui/styles/.0.0-alpha.2
์ (๋ฅผ) ์ค์นํ์ง๋ง ์ฌ์ ํ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ ๋น๋ฉดํ์ด ๋ฌธ์ (8223)์ ๊ด๋ จ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์จ๋ ์ฌ๊ธฐ์ ๊ฐ๋ค. ํ
๋ง๋ฅผ ๊ฐ์ ธ์ค๊ณ makeStyles
์ ์ ๋ฌํ๋ ํจ์์ ์ ๋ฌ๋๋ ๊ฒ์ ์์กดํ์ง ๋ง์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ๋๋ฌ์ต๋๋ค.
๋๊ตฐ๊ฐ v3.7.0 (https://github.com/mui-org/material-ui/releases/tag/v3.7.0)์์ ์ค์น ๋จ๊ณ๊ฐ ์ฌ์ ํ ํ์ํ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๊น?
@christiaanwesterbeek ์, ํ์์ ๋๋ค. Material-UI v4์์ ์ค์น ๋จ๊ณ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
@oliviertassinari ์๋
ํ์ธ์, ์ต์ v3.9.0์์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ @ material-ui / styles๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. withStyles
์์ core
withStyles
์ (๋ฅผ) ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ ๊ฐ์ง ์ง๋ฌธ์ด ์์ต๋๋ค. .
๊ฐ์ฌ
์ต์ v3.9.0์์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
@ w3nda ์ด๊ฒ์ ๋๋ฌด ์ผ๋ฐ์ ์ ๋๋ค.์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ๋ฐฑ๋ง ๊ฐ์ง์ ๋๋ค.
์ง๊ธ mui / styes๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ฑฐ๋ v4 ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ค๋ ค์ผํฉ๋๋ค. (๋๊ท๋ชจ ์ฑ)
ํด๋์ค ์ด๋ฆ ํด์ฑ ๋ ผ๋ฆฌ๋ฅผ ๋๋๋ฆด ์ ์์ต๋๋ค. ์๋ฒ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์๋์ง๋ง ํด๋ผ์ด์ธํธ์๋ ์๋นํ ๋น์ฉ์ด ๋ญ๋๋ค. ๋์ ํ์ฑํ ํ ํ๋๊ทธ๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์๋, ์ต์ ์ ์ ํ์ ํต์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด ํ์ด์ง https://material-ui.com/guides/server-rendering/#troubleshooting ์ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น?
@oliviertassinari ๋น ๋ฅธ ์๋ต์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น
ํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ธ๊ธ ํ ๋งํฌ๋ ์ ์ ์ฌ์ดํธ ์ญํ ์ํ๊ธฐ ๋๋ฌธ์ ์ ์ ๊ด๋ จ์ด ์์ต๋๋ค ..
๋ด๊ฐ ์ธ๊ธ ํ ์๊ฒฌ์ด ๋์์ด ๋์์ต๋๊น? ์ ๊ฒฝ์ฐ์์ด ๋ฌธ์ ์ ์์ธ์ ์๋ ค ์ฃผ์ด์ผํ์ง ์์ต๋๊น?
@ w3nda ์ ์ ์น ์ฌ์ดํธ์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. HTML์ ์์ฑํด์ผํ๋ฏ๋ก ์๋ฒ ์ธก ๋ ๋๋ง API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ธ๋ฑ์ค ์นด์ดํฐ๊ฐ ๋ ํ์ด์ง ์ฌ์ด์์ ๋์ถ๋๋ฉด ํด๋์ค ์ด๋ฆ์ด ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค. ๊ธ์, ๋๋ ๋๋ฆฐ ํด๋์ค ์ด๋ฆ ์์ฑ๊ธฐ๊ฐ ๊ทธ๋ฌํ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น
ํ๋ ๊ฒ (๋ฐ ๋น๋)์ ๋นํด ์ข์ ์ ์ถฉ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์, @material-ui/styles
์
๊ทธ๋ ์ด๋ ํ ์ ์์ต๋๋ค. ๊ฐ๋จํ ํ์ถ๊ตฌ์
๋๋ค.
๋๋ ๋ฐฉ๊ธ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ ์๋ ์ค๋๋ material-ui ๊ฐ์ ธ ์ค๊ธฐ์์ต๋๋ค. ๊ฐ๋ฐ ๋ชจ๋์์๋ ์ ์๋ํ์ง๋ง ํ๋ก๋์
์์๋ ์์๋์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ์ ์ ์๋ํ๋ค๊ณ ํ์ ํฉ๋๋ค.์ด ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๊ฐ ๋ฐํ ๋ ์ ์๋์ง๋ ํ์คํ์ง ์์ต๋๋ค.
ํ๋ก์ ํธ๊ฐ์ ์ผ์นํ๋๋ก ๋ฒ์ ์ ์
๋ฐ์ดํธํ๊ณ ๋ชจ๋ ๊ฒ์ด ๋ค์ ์๋ํ์ต๋๋ค.
์๋
ํ์ธ์, ์ ๋ ์ ์ฌ์ดํธ์ ๋จ์ผ ์
๋ ฅ, ๋ฒํผ ๋ฐ ์์์๋ง ์๋ฃ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ์ด ๋๊ธ ๋ค์์ <JssProvider />
๋ฅผ ์ฌ์ฉํด์ผํ์ต๋๋ค. https://github.com/mui-org/material-ui/issues / 8223 # issuecomment -331412432
์ด jss ๊ณต๊ธ์๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ์ฑ๊ฐ์ ์ผ์ ๋๋ค. ์ต์ข ๋น๋ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ์ง ์๋๋ก ํ ์์๋ ๋ ๋ค๋ฅธ ์์ ์ฌํญ์ด ์์ต๋๊น?
@kopax JssProvider
๋ฅผ) ๋ฌด์์ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
์๋
ํ์ธ์ @oliviertassinari , production
๋ค๋ฅธ ๊ฒฝ๋ก๋ฅผ ๋ฐฉ๋ฌธํ๊ธฐ ์ ์ (react-router๋ฅผ ์ฌ์ฉํฉ๋๋ค) :
๊ฒฝ๋ก ๋ฐฉ๋ฌธ ํ production
๋๋ development
์ฌ๊ธฐ์ ๋น์ทํ ์ผ์ด ์์ (์ด์ํ ์์ ๊ทธ๋ฆผ์)์์ ๋ฐ์ํฉ๋๋ค. ํ๋ก๋์ ์์๋ง ๋ฐ์ํ๋ ์ ์ ํ CSS๋ฅผ ๊ฐ๊ธฐ ์ํด ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํด์ผํฉ๋๋ค.
JssProvider
์ถ๊ฐํ๋ฉด ๋ ๋ฌธ์ ๊ฐ ๋ชจ๋ ํด๊ฒฐ๋ฉ๋๋ค. (๊ณ ์ : ์ฐ๋ฆฌ๊ฐ ๊ฐ์ CSS๋ฅผ ๊ฐ์ง๊ณ production
์ ๋นํด development
)
๋๋ ๋ชจ๋ฅธ๋ค. ์ ๊ณต๋ ์ ๋ณด๋ก ๋์ ๋๋ฆด ์ ์์ต๋๋ค.
๋ชจ๋ ๊ฒ๋ ๋ง๊ฐ์ก์ต๋๋ค. ํ๋ก๋์
์์ ์๋ชป๋ ์ฃผ๋ฌธ jssXX
ํด๋์ค๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ชป๋ ์คํ์ผ์ด ์ง์ ๋ฉ๋๋ค. ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์น ํ์ ๋ฐ์ํฉ๋๋ค.
์์ง ์ด์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
@oliviertassinari ์๋ง๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๊ณ ์๋ [email protected]์์ ์ฌ์ฉํ๋ ๋ฒ์ ๋ฒํธ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์๋ ค์ฃผ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
"@material-ui/core": "^1.4.0",
"@material-ui/icons": "^1.0.0",
"material-ui-chip-input": "1.0.0-beta.6 - 1.0.0-beta.8",
Material-UI๊ฐ ํ ๋ฒ๋ง ๋ฒ๋ค๋ก ์ ๊ณต๋๋๋ก ํ ์ ์์ต๋๊น? ๋ ๊ฐ์ง ๋ฒ์ ์ ๋์์ ์ฌ์ฉํ๋ฉด ๋์ผํ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์. ์์ ์์๋ค. ๋ฒ์ ~ 1.5๋ฅผ ๊ถ์ฅํ๋ react-admin
์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
JssProvider
๋ฅผ ์ถ๊ฐํ์ฌ ํ๋ก๋์
๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ด์ ํ์ด์ง๋ฅผ ์ ์์ ์ผ๋ก ์๋ก ๊ณ ์น ์ ์์ต๋๋ค.
import React from "react";
import { Admin, Resource } from "react-admin";
import JssProvider from "react-jss/lib/JssProvider";
const App = () => (
<JssProvider>
<Admin dataProvider={dataProvider}>
<Resource name="trip" list={RequestsList} className="resourceItem" />
</Admin>
</JssProvider>
);
export default App;
@andrewkslv ์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ํผํ๋ ค๋ ๊ฒ์
๋๋ค. @ material-ui์ Input
๋ฐ Button
๊ตฌ์ฑ ์์ ๋ง ์ฌ์ฉํ๋ฏ๋ก JssProvider
์์ด ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. , ๋์ ๋๋จธ์ง UI ๋ฅผ react-admin์ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค.
@oliviertassinari ๋ฐฉ๊ธ ํ์ธํ๊ณ ๋ช ๊ฐ์ง ์ข
์์ฑ ๋ฌธ์ ๊ฐ์์์ต๋๋ค. ์์ ํ์ง๋ง ์ฌ์ ํ ๋ค์ npm ls @material-ui/core
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
โโโฌ @bootstrap-styled/[email protected]
โ โโโ @material-ui/[email protected]
โโโ @material-ui/[email protected]
โโโฌ [email protected]
โโโ @material-ui/[email protected]
์ํ ํ :
rm -rf node_modules/@bootstrap-styled/ra-ui/node_modules/@material-ui/
rm -rf node_modules/ra-ui-materialui/node_modules/@material-ui/
npm ls @material-ui/core
โโโฌ @bootstrap-styled/[email protected]
โ โโโ UNMET DEPENDENCY @material-ui/[email protected]
โโโ @material-ui/[email protected]
โโโฌ [email protected]
โโโ UNMET DEPENDENCY @material-ui/[email protected]
์ด์ ์๋ํฉ๋๋ค (ํ๋ก๋์ ์์ CSS ๋ฌธ์ ์์). ์ด๊ฑด ๋ด๊ฐ ์ํ๋ ๊ฒ ์๋ ๊ฒ ๊ฐ์ ...
๊ด๋ จ ํ๋ก์ ํธ @ material-ui ์ข ์์ฑ :
๋ฌด์์ํด์ผํ ์ง ์์ญ๋๊น?
@kopax ๋๋ฒ๊น ํ ์์๋ ๊ฒ์ด ์์ผ๋ฉด ๋งํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ง๊ธ ์๋ํ๋ค๋ ์์์ ๋ฃ๊ณ ๊ธฐ์ฉ๋๋ค.
Material-UI์์ ์คํ์ผ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ๊ณ ์์์ ํ์ธํ์ต๋๋ค. ์๊ฐ์ด ์๋ค๋ฉด Gitter์ ํตํฉ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค.
์์ ์๋ฃจ์ ์ ์์ฐ์ค๋ฝ์ง ์์ต๋๋ค. ์ฆ, npm์ผ๋ก ์คํํ ์์๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ด๋ค. ๋๋ ์ด๊ฒ์ ํํธ๋ก ์ฃผ์๋ค.
์ฐ๋ฆฌ๋ ์์์ผ์ ๊ธฐํ๋ฅผ ๊ฐ์ง ๊ฒ์ด๊ณ , ๋๋ mui gitter ์ฑ๋์ ์ฐธ์ฌํ ๊ฒ์ ๋๋ค.
์๋ ํ์ธ์ @kopax , ํด๊ฒฐ์ฑ ์ ์ฐพ์์ต๋๊น?
์๋, ์์ง. ๊ณต๊ธ์ ์์ด๋ ์๋๋๋ค. @oliviertassinari ๋๋ ๊ธฐ์ด์์๋ค.
@andrewkslv ๊ทํ์ ์๋ฃจ์
์ด ์ ๋ง ์ ์๊ฒ react-admin
๋ฐ AWS Amplify๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์
์ S3 ๋ฒํท์ ๋ฐฐํฌ ํ ๋๋ง๋ค ์คํ์ผ์ด ๋ชจ๋ ๊นจ์ก๊ณ ์๋ฃจ์
์ด ์ ๋ฅผ ์ ๋ง๋ก ๊ตฌํ์ต๋๋ค.
์ฌ๊ธฐ์๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. JssProvider๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ๋์์ด๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ค๋ณต ๋ ์คํ์ผ ์ธ์คํด์ค๊ฐ ์ฌ์ฉ๋ ๋ ๊ฒฝ๊ณ ํ๊ธฐ ์ํด v4์ ๊ฒฝ๊ณ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค : # 15422.
๋ชจ๋ฅด๊ฒ ์ด์. ๋๋ react-admin
์์ ์๋ก์ด ๋ฒ์ ์ ๋จธํฐ๋ฆฌ์ผ UI๋ฅผ ํ๋ ์ ์ํฌ์ ๊ตฌํํ ๋์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ์ง๋ง ๋ฌด์๋์์ต๋๋ค.
https://github.com/marmelab/react-admin/pull/3102#issuecomment -484228320
ํ๋ก๋์ ๋น๋ ํด๋์ค ์ด๋ฆ ์ถฉ๋ # 8223์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ด๋์์ ์ฐพ์ ์ ์์ต๋๊น?
๊ฐ์ฌ,
@oliviertassinari ๋ด๊ฐ ๋ชจ๋ ์ง์นจ์ ๋ฐ๋์์๋ ๋ถ๊ตฌํ๊ณ ์ด ๋ฌธ์ ์ ๋ค์ ์ง๋ฉดํ์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ์ํด ์ผํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ ๋์น๊ณ ์์ ์ ์์ต๋๋ค.
๋ค์ ๋ฒ์ ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
"@ material-ui / core": "^ 4.6.1",
"@ material-ui / icons": "^ 4.5.1",
"๋ฐ์": "^ 16.12.0",
"react-dom": "^ 16.12.0",
"react-jss": "^ 10.0.0",
"๋ฐ์ ์คํฌ๋ฆฝํธ": "3.2.0"
์ ๋ฐ์ดํธ : ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ๋ฌธ์ํ๋ฅผ ์ฒ ์ ํํ์ง ๋ชปํด ์ฃ์กํฉ๋๋ค. ๋ฌธ์์์ด ๋ถ๋ถ์ด ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
https://material-ui.com/styles/api/#creategenerateclassname -options-class-name-generator
๊ทธ๋ฌ๋ ์ด๋ป๊ฒ ๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ ์ํด ์๋ํ๊ณ ์๋ JSSProvider ์๋ฃจ์ ์ด ์ ์๊ฒ๋ ์๋ํ์ง ์์์ต๋๋ค. ์ด์จ๋ ๊ฐ์ฌํฉ๋๋ค :)
@KannugoPrithvi ๊ฐ์ฌ https://material-ui.com/styles/api/#creategenerateclassname -options-class-name-generator
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ถฉ๋ํ๋ ํด๋์ค ์ด๋ฆ์ด ์๊ณ
createGenerateClassName
์ต์ ์ ์ ๋์ฌ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.์ฌ๊ธฐ ์์ ํ๋ฅญํ๊ณ ํฌ๊ด์ ์ธ ๋ฌธ์๋ฅผ ์ฌ์ฉ