注意这一点很重要:
-
react-admin 基于 material-ui 呈现几乎所有(如果不是全部)它的组件。
- 要设置
react-admin 组件的样式,您需要使用存在于所有组件上的className 属性(继承自material-ui)。
您可以通过以下两种基本方式做到这一点:
- Material-ui 样式:
import { createStyles, makeStyles } from '@material-ui/core';
const useStyles = makeStyles(() =>
createStyles({
root: {
width: '500px',
},
bool: {
width: '100%',
textAlign: 'center',
},
reason: {
textAlign: 'center',
},
}),
);
export const YourComponent = props => {
const classes = useStyles(); // initialize the styles
return (
<ArrayField source="bans" reference="bans" >
<Datagrid className={classes.root}>
<BooleanField label="isBanned" source="isBanned" className={classes.bool} />
<ReasonsField label="reason" source="reason" className={classes.reason} />
</Datagrid>
</ArrayField>
);
};
您可以阅读更多关于 material-ui styling 的信息以了解它的动态。
- 普通 CSS 样式:
- 在您的
src/index.js 中,您可能有类似或稍有不同的内容:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './index.css'; // this is the line of interest (update it to call your CSS file)
ReactDOM.render(<App />, document.getElementById('root'));
- 在您的 CSS 文件中(对于本示例,
src/index.css)
/* i've used css classes */
.column {
width: 500px;
}
.centered {
text-align: center;
}
.wide {
width: 100%;
}
import clsx from 'clsx'; // install this "clsx" package - an alternative is "classnames"
export const YourComponent = props => {
return (
<ArrayField source="bans" reference="bans" >
<Datagrid className={clsx('column')}>
<BooleanField label="isBanned" source="isBanned" className={clsx('centered', 'wide')} />
<ReasonsField label="reason" source="reason" className={clsx('centered')} />
</Datagrid>
</ArrayField>
);
};
如果您阅读更多关于 clsx 或 classnames 的信息,您会注意到您甚至可以根据一些 react/javascript 逻辑来设置组件样式 - 非常有趣的东西。