cssã¯ã©ã¹åã®å®çŸ©ãäžéšã®ã³ã³ããŒãã³ãã§éè€ããŠããŸã-ç§ã®å Žåã MuiIconButton
ãšMuiModal
éè€ããŠããŸãïŒãããã°ããæšæž¬ããŸãïŒ-çŸåšã®åäœã確èªããŠãã ãã
ã¯ã©ã¹åã¯ãã³ã³ããŒãã³ãéã§éè€ããªãããã«ããå¿ èŠããããŸãã
ç§ã®ãã¿ã³ã®ã¹ã¿ã€ã«ïŒ
ã¯ã©ã¹ãè€è£œãããŸãã
ã¹ã¿ã€ã«ã®å®çŸ©ïŒ
éçºã¢ãŒãã§åäœããŠããŸãïŒ
ç§ã®ãã¿ã³ã®ã¹ã¿ã€ã«ïŒ
ãããŠå®çŸ©ãèŠã€ããŸããïŒ
ããã³ã¢ãŒãã«ããïŒ
åé¡ãåçŸããããã®ç°å¢ãæºåããããšã¯ã§ããŸãããä»ã¯ããã§å ±åããããšæããŸãã
ã¢ããªã±ãŒã·ã§ã³ãå®çšŒåç°å¢ã§ãªãªãŒã¹ããããšããŠããŸãã
| æè¡| ããŒãžã§ã³|
| -------------- | --------- |
| ãããªã¢ã«-UI | 1.0.0-beta.10 |
| React | 15.6.1 |
| ãã©ãŠã¶| ä»»æ|
| webpack | ^ 3.3.0 |
åé¡ãçºçããå¯èœæ§ã®ãããã³ããå¿
èŠã§ãã withStyles
ãœãªã¥ãŒã·ã§ã³ãã©ãã«ã䜿çšããŠããŸãã-ã¹ã¿ã€ã«ã®ãªãŒããŒã©ã€ãã«ã¯ã¹ã¿ã€ã«ä»ãã³ã³ããŒãã³ãã䜿çšããŠããŸãã
ç§ã¯ãã§ã«ãã®åé¡ã«é¢ããããã€ãã®
ç§ã¯ä»ã®ãšããåé¡ã解決ã§ããªããšããŠéããŠããŸãã è€è£œäŸãããã°æããŠãã ããã
@oliviertassinariåé¡ãåçŸããããšãã§ããŸããã ãããwebpackãã³ã§ã-https ïŒ //www.webpackbin.com/bins/-KuO6ia3h-JDpBOJncZ3
ç§ã®å Žåã2ã€ã®ç°ãªãdivã«åå¥ã«ããŠã³ãããã2ã€ã®ã¢ããªã±ãŒã·ã§ã³ã«ãŒãããããŸãã ã©ã¡ããåããããªã¢ã«ã䜿çšããŸã-ui ThemeProvider
ãJssProvider
ã©ããããŠã_jss_ã®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ãããã€ããŒã¯ãããªãŒããšã«1ã€ãã€ã2ã€ã®ã¯ã©ã¹åãžã§ãã¬ãŒã¿ãŒãäœæããŸãã ãããã£ãŠãã¯ã©ã¹åã®ç«¶åãçºçããŸãã
@kofã¯ã©ã¹åãžã§ãã¬ãŒã¿ãŒãåãå
¥ããããã«JssProviderãreact-jss
ããæ¡åŒµããå¿
èŠããããŸããïŒ
ã¯ã©ã€ã¢ã³ãåŽã¢ããªã±ãŒã·ã§ã³ã®åé¿çïŒç¬èªã®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ã¯ééããªãreactããªãŒã®åæéåæã¬ã³ããªã³ã°ããµããŒãããå¿ èŠããããŸãïŒåŒ·ãããŒãºïŒã ããããçŸåšã®å®è£ ã§ã¯ãã§ã«ãµããŒããããŠããŸã:)
@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
ãæã€ããšã¯çã«ããªã£ãŠããŸãã 1ã€ç®ã¯ãããã°çšã2ã€ç®ã¯ã¯ã©ã¹åã®èªåäžææ§çšã§ãã
https://github.com/facebookincubator/create-react-app/issues/3173 ïŒããã³ãªã³ã¯ãããçž®å°ãã¹ãã±ãŒã¹ïŒãä»ããŠãã®åé¡ã«ééããŸããã
ç§ã®å Žåããããªã¢ã«UIã«äŸåããã³ã³ããŒãã³ãïŒv1.0.0-beta.11ïŒãã material-uiïŒåãããŒãžã§ã³ïŒã䜿çšãŠããŸã
ããããè€æ°ã®åå¿ã¬ã³ããªã³ã°ããªãŒããšããŠé©æ Œã§ããã var ruleCounter = 0;
åã«createGenerateClassName()
var ruleCounter = 0;
ã移åããããšãåé¡ã®åé¿çã§ã¯ãªãã£ããã©ããcreateGenerateClassName()
ããããŸãããã次ã®ããã«ã³ã¡ã³ãã¢ãŠãããŸãã
ç³ãèš³ãããŸããããïŒ7855ãéããæç¹ã§ã¯ãã以äžã®æ
å ±ãæäŸã§ããŸããã§ãããð
ãã®ã³ã¡ã³ãã¯åºæ¬çã«ãæ¬çªãã«ããå®è¡ãããšãã«çŽé¢ããåé¡ãã«ããŒããŠããŸãã
ãã€ãã©ã€ã³ã§ãããåé¿ããã«ã¯ã©ãããã°ããã§ããïŒ
ãããreact-jsshttps ïŒ//github.com/cssinjs/react-jss/pull/155ã§ä¿®æ£ããå¿ èŠãããPRãäœæããŸãã
ããã§ã¯ãèŠçŽããŸãããã
@darkowicã®åé¡ã®æ ¹æ¬çãªåå ã¯ãããã§èª¬æãããŠããŸãhttps://github.com/callemall/material-ui/issues/8223#issuecomment -331076580ãšåºå®ãããŸã@kofã«æè¬ã®PRïŒcssinjsã¯/åå¿ããJSSïŒ 155ãšãå°æ¥ãã®ç¶æ³ãé²ãããã«æ°ããèŠåãè¿œå ãããŸãïŒïŒ8341ã
@tlvinceã®åé¡ã®çç¶ã¯åãã§ãããæ ¹æ¬çãªåå ã¯ç°ãªããŸãã åäžã®reactã¬ã³ããŒããªãŒã䜿çšããŠããŸãã ã€ã³ã¹ããŒã«ãããŠããè€è£œãããMaterial-UIããŒãžã§ã³ã«ãªã³ã¯ãããŠããå¯èœæ§ããããŸãã èŠåã確èªããäœãèµ·ãã£ãŠããã®ããæ£ç¢ºã«ææ¡ã§ããå Žåã¯ãå¥ã®åé¡ãéããŠãã ããã
@Robophilã®åé¡ã¯ãããŸããããŠãå®è¡ã§ããŸããã
ã¯ã©ã¹åãè¡çªãã createGenerateClassName
ãªãã·ã§ã³ã«ãã¬ãã£ãã¯ã¹ãè¿œå ãããšãåé¡ã解決ããŸããã
ããã§çŽ æŽãããå æ¬çãªããã¥ã¡ã³ãã䜿çšã
@oliviertassinarièŠçŽãããããšãïŒ
åäžã®reactã¬ã³ããŒããªãŒã§ã¯ããã®åé¡ã¯ãã«ãå ã®ç°ãªãmaterial-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'),
},
}
ãããã®2ã€ã®ã³ã³ããŒãã³ããšãsplitChunksãªãã·ã§ã³ã䜿çšããŠæ§ç¯ãããå
±éã®ã³ã³ããŒãã³ãããããŸãã
JSSProviderã䜿çšããŠãããã©ã«ãã®ãšã¯ã¹ããŒããããã³ã³ããŒãã³ããMyFirstCompãšMySecondCompã§ã©ããããŸããã
å
±éã³ã³ããŒãã³ãã®åšãã§JSSProviderãã©ã®ããã«äœ¿çšããå¿
èŠããããŸããïŒ
@SewdnãŸããããŸããŸãªãããªã¢ã«UIããŒãžã§ã³ãåå ã§ããå¯èœæ§ããããšæããŸãã ãã®classNameã®ç«¶åã®åé¡ã¯ãæšæ¥ãããã¯ãšã3.0.0-alpha.1ã«ãã@ material-ui / stylesããmakeStylesã«ãã£ãŠäœæãããuseStylesããã¯ãžã®ç§»è¡ãéå§ãããšãã«ã¢ããªã§çºçããŸããã
ãŸãã3.6.0ã®ã@ material-ui / coreãã䜿çšããŠããŸããã
çªç¶ãç§ã®ã¢ããªã¯ã©ã¹ãšmaterial-uiã¯ã©ã¹ã®äž¡æ¹ãjss1ã§å§ãŸãã䞊è¡ããŠã«ãŠã³ãã¢ããããŸããã ããã¯ãã¹ãŠãæ··ä¹±ãããã§ãããã ããšãã°jss5ã䜿çšããç§ã®ããããŒããããšãã°MuiListItemã®jss5ã䜿çšããŠã¹ã¿ã€ã«èšå®ãããŸããã
ãã®è§£æ±ºçã«åŸã£ãåŸã@ iamhosseindhvã«ãã£ãŠhttps://github.com/mui-org/material-ui/issues/8223#issuecomment -412349569ã䜿çšããã muiã³ã³ããŒãã³ãã®ã¯ã©ã¹ã®ãã¬ãã£ãã¯ã¹ã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ã¢ãžã¥ãŒã«ã®ã€ã³ããŒãã¯ã¢ãžã¥ãŒã«ã®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>
ã©ãããããšãåãåé¡ãçºçããŸã
@zheeeng
ã³ãŒãã¯ãšã©ãŒ
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-UIv4ã®ã€ã³ã¹ããŒã«æé ãåé€ããŸãã
@oliviertassinariãããç§ã¯ææ°ã®v3.9.0ã§ãã®åé¡ãçµéšããŠããŸãããããŠç§ã¯@ material-ui / stylesã䜿çšããŠããŸãããç§ã¯ãŸã withStyles
ããcore
ã䜿çšããŠããŸã2ã€ã®è³ªåããããŸãã
ããããšã
ææ°ã®v3.9.0ã§ãã®åé¡ãçºçããŠããŸã
@ w3ndaããã¯äžè¬çãããŸãããã®åé¡ãçºçããçç±ã¯ã
ä»ããmui / styesã«ç§»è¡ããããv4ã®ãªãªãŒã¹ãåŸ ã€å¿ èŠããããŸãã ïŒå€§èŠæš¡ã¢ããªïŒ
ã¯ã©ã¹åã®ããã·ã¥ããžãã¯ãå ã«æ»ãå¯èœæ§ããããŸãã ãµãŒããŒã®ããã©ãŒãã³ã¹ã¯å€§å¹ ã«åäžããŸãããã¯ã©ã€ã¢ã³ãã«ã¯ããªãã®ã³ã¹ããããããŸãã 代ããã«ããããæå¹ã«ãããã©ã°ãæäŸãããããããŸããã ããããæåã®éžæè¢ã¯ã³ã¢ã®åé¡ã解決ããããšã ãšæããŸãã ãã®ããŒãžhttps://material-ui.com/guides/server-rendering/#troubleshootingãè©ŠããŸãããïŒ
@oliviertassinariè¿
éãªå¯Ÿå¿ã«æè¬ããŸããåé¡ããããã°ããæ¹æ³ãæ¬åœã«ããããŸãããéçãµã€ããšããŠæ©èœããŠãããããããªããèšåãããªã³ã¯ã¯ç§ã«ã¯é¢ä¿ãããŸããã
ç§ãåç
§ããã³ã¡ã³ããç§ãå©ããŠãããã®ã§ãããç§ã®å Žåããã®åé¡ã®åå ãæããŠãããŸãããïŒ
@ w3ndaéçWebãµã€ãã«ãåãåé¡ããããŸãã HTMLãçæããå¿
èŠãããããããµãŒããŒåŽã®ã¬ã³ããªã³ã°APIã䜿çšãããŸãã 2ããŒãžéã§ã€ã³ããã¯ã¹ã«ãŠã³ã¿ãŒããªãŒã¯ãããšãã¯ã©ã¹åãæ£ãããªããªããŸãã ããã§ãããã¯ã©ã¹åãžã§ãã¬ãŒã¿ãŒãé
ãããšã¯ããã®ãããªåé¡ããããã°ããã®ãèŠçã§ããïŒãããŠãããã©ãã»ã©é »ç¹ã§ãããïŒã®ãšæ¯èŒããŠãè¯ããã¬ãŒããªãã ãšæããŸãã ã ãããã¯ããããªãã¯@material-ui/styles
ã«ã¢ããã°ã¬ãŒãããããšãã§ããŸããããã¯åçŽãªãšã¹ã±ãŒããããã§ãã
ç§ã¯ã¡ããã©åæ§ã®åé¡ãæ±ããŠããŸããããããŠããã¯ç§ãã¡ã®ã©ã€ãã©ãªã®1ã€ã«ãã£ãå€ã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
ãè¿œå ãããšãäž¡æ¹ã®åé¡ãä¿®æ£ãããŸãã ïŒä¿®æ£æžã¿ïŒ development
ãšåãcssãproduction
ãããŸãïŒ
äœãæãã€ããŸããã ç§ã¯æäŸãããæ å ±ãæäŒãããšã¯ã§ããŸããã
ãã¹ãŠãå£ããŠããŸãã ãããã¯ã·ã§ã³ã§ééã£ãé åºã®jssXX
ã¯ã©ã¹ã芳å¯ãããã®çµæãééã£ãã¹ã¿ã€ã«ã確èªããŸãã ããã¯ãããŒãžãæŽæ°ããåŸã«çºçããŸãã
ãŸã çç±ãèŠã€ãããŸããã
@oliviertassinariãããããç§ãã¡ã䜿çšããŠãã
"@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åã ããã³ãã«ãããŠããããšã確èªã§ããŸããïŒ 2ã€ã®ããŒãžã§ã³ãåæã«äœ¿çšãããšãåããã°ã®ããåäœãçºçããå¯èœæ§ããããŸãã
äžæã ãããå¯èœã ã æšå¥šããŒãžã§ã³ã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ã®Button
ã³ã³ããŒãã³ããšInput
ã€ã ã䜿çšããããã JssProvider
ãªãã§äœ¿çšããããšããå§ãããŸãã代ããã«ãæ®ãã®éšåã«ã¯ãreact-adminçšã®å¥ã®UIã䜿çšããããšããå§ãããŸãã
@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ã§styled-componentsã䜿çšããŠããããšã«æ°ã¥ããŸããã æéãããã°ãGitterã§ã®çµ±åã«ã€ããŠã話ãããããšæããŸãã
å®çšçãªè§£æ±ºçã¯èªç¶ã§ã¯ãããŸããã ã€ãŸããnpmã§ã¯å®è¡ã§ããªãã¿ã¹ã¯ãå«ãŸããŸãã ç§ã¯ããã䜿çšããŸãããç§ã¯ããããã³ããšããŠäžããŸããã
æææ¥ã«ãã£ã³ã¹ããããŸããmuigitterãã£ã³ãã«ã«åå ããŸãã
ããã«ã¡ã¯@kopax ãããªãã¯è§£æ±ºçãèŠã€ããããšãã§ããŸãããïŒ
ãããããŸã ã§ãã ãããã€ããŒãªãã§ã¯ãããŸããã @oliviertassinariç§ã¯èŠæã§ãã
@andrewkslvããªãã®ãœãªã¥ãŒã·ã§ã³ã¯æ¬åœã«ç§ã®ããã«åããã react-admin
ãšAWSAmplifyã䜿çšããŠããŸãã ç§ãreactã¢ããªã±ãŒã·ã§ã³ãS3ãã±ããã«ãããã€ãããšãã¯ãã€ã§ããã¹ã¿ã€ã«ã¯ãã¹ãŠå£ããŠããŠãããªãã®ãœãªã¥ãŒã·ã§ã³ã¯æ¬åœã«ç§ãæããŸããã
ããã§åãåé¡ã JssProviderãè¿œå ãããšåœ¹ç«ã€ã®ã¯ãªãã§ããïŒ
éè€ããã¹ã¿ã€ã«ã€ã³ã¹ã¿ã³ã¹ã䜿çšããããšãã«èŠåããèŠåãv4ã«è¿œå ããŸããïŒïŒ15422ã
ç¥ããŸããã ãã¬ãŒã ã¯ãŒã¯ã«æ°ããããŒãžã§ã³ã®ãããªã¢ã«UIãå®è£
ããŠãããšãã«ããã®åé¡ãreact-admin
çºçãããŸããããç¡èŠãããŸããã
https://github.com/marmelab/react-admin/pull/3102#issuecomment -484228320
æ¬çªãã«ãã«é¢ãã解決çã¯ã©ãã«ãããŸããïŒã¯ã©ã¹åã®ç«¶åïŒ8223ïŒ
ããããšãã
@oliviertassinariãã¹ãŠã®æ瀺ã«åŸã£ãã«ããããããããã®åé¡ã«åã³çŽé¢ããŠããŸãã ããã¯ä»ã®äººã®ããã«åããŠããã®ã§ãç§ã¯ç§ãåºæ¬çãªäœããéããŠãããããããªããšæããŸãã
次ã®ããŒãžã§ã³ã®ããã±ãŒãžã䜿çšããŠããŸãã
"@ material-ui / core"ïŒ "^ 4.6.1"ã
"@ material-ui / icons"ïŒ "^ 4.5.1"ã
"react"ïŒ "^ 16.12.0"ã
"react-dom"ïŒ "^ 16.12.0"ã
"react-jss"ïŒ "^ 10.0.0"ã
"react-scripts"ïŒ "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
ãªãã·ã§ã³ã«ãã¬ãã£ãã¯ã¹ãè¿œå ãããšãåé¡ã解決ããŸãããããã§çŽ æŽãããå æ¬çãªããã¥ã¡ã³ãã䜿çšã