今天来厘清 @material-ui/core/styles 的 API。
一个返回类名生成器函数的函数。
options (Object [optional]):
class name generator: 提供给 JSS。
import React from 'react';
import { StylesProvider, createGenerateClassName } from '@material-ui/core/styles';
const generateClassName = createGenerateClassName({
productionPrefix: 'c',
});
export default function App() {
return (
<StylesProvider generateClassName={generateClassName}>...</StylesProvider>
);
}
这个函数在运行时并没有真正“做任何事情”,它只是身份函数,唯一目的是在为主题的函数 makeStyles/withStyles 提供样式规则时阻止 TypeScript 的类型扩展。
styles: 样式Object.
import { makeStyles, createStyles } from '@material-ui/core/styles';
const useStyles = makeStyles((theme: Theme) => createStyles({
root: {
backgroundColor: theme.color.red,
},
}));
export default function MyComponent {
const classes = useStyles();
return <div className={classes.root} />;
}
这就是我们之前范例常常使用的 hook。
hook: 可以在functional component 中使用。
import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
const useStyles = makeStyles({
root: {
backgroundColor: 'red',
color: props => props.color,
},
});
export default function MyComponent(props) {
const classes = useStyles(props);
return <div className={classes.root} />;
}
这是一个处理服务器端渲染的类助手,实用范例。
import ReactDOMServer from 'react-dom/server';
import { ServerStyleSheets } from '@material-ui/core/styles';
const sheets = new ServerStyleSheets();
const html = ReactDOMServer.renderToString(sheets.collect(<App />));
const cssString = sheets.toString();
const response = `
<!DOCTYPE html>
<html>
<head>
<style id="jss-server-side">${cssString}</style>
</head>
<body>${html}</body>
</html>
`;
使用样式组件模式将样式表与功能组件链接起来。
Component: 建立一个新的 component。
import React from 'react';
import { styled } from '@material-ui/core/styles';
const MyComponent = styled('div')({
backgroundColor: 'red',
});
const MyThemeComponent = styled('div')(({
theme
}) => ({
padding: theme.spacing(1),
}));
export default function StyledComponents() {
return (
<MyThemeComponent>
<MyComponent />
</MyThemeComponent>
);
}
那麽今天的内容就到这边,明天还会接续讲解後面的 API。
今天状况不佳,稍微休息一下。 在Day02的时候有先粗略摆放预览页的几个按钮: 今天没什麽内容,就把...
可信恢复是“在系统故障後确保恢复而不受影响的能力”。( NIST Glossary )通用标准中指定...
Ever since the release of Puzzle Bobble — called B...
修饰符(Modifier) 上一篇有讲到封装的特性,也就是把一个类别要运行操作所需用到的资讯都包...
首先来看看如何取用 Firebase SDK 的服务: val firestore = Fireba...