listItemText(Material-UI @next)内のテキストにスタイルを適用しようとしています:
const text = {
color: 'red'
}
<ListItem button><ListItemText style={text} primary="MyText" /></ListItem>
しかし、レンダリングされた<Typograhy>
要素内のスタイルはまったく設定されていません( "MyText"は赤ではありません)。
生成されたコードを見ると、Typography> subheadingのデフォルトのCSSルールが私のCSSをオーバーライドしているようです。
ご協力いただきありがとうございます
編集:質問の最初のバージョンでは、ミス(ListItemTextの「スタイル」の代わりに「クラス名」、それについて申し訳ありません)がありました。
これを今すぐ達成する唯一の方法は、ListItemText要素の「disableTypography」プロップを使用することです。
<ListItemText
disableTypography
primary={<Typography type="body2" style={{ color: '#FFFFFF' }}>MyTitle</Typography>}
/>
これにより、独自のテキスト要素を好きなスタイルで埋め込むことができます。
これを行うには、さらに良い方法があります:
const styles = {
selected: {
color: 'green',
background: 'red',
},
}
const DashboardNagivationItems = props => (
<ListItemText
classes={{ text: props.classes.selected }}
primary="Scheduled Calls"
/>
)
export default withStyles(styles)(DashboardNagivationItems)
これがどのように行われるかについて詳しくは、こちらをご覧ください: https://material-ui-next.com/customization/overrides/#overriding-with-classes
this は良いものです。タイポグラフィを無効にすることなく実装できます
<ListItemText
classes={{ primary: this.props.classes.whiteColor }}
primary="MyTitle"
/>
以下に関して、@ SundaramRaviに何かを追加します。
Whatever.styles.js
const styles = theme => ({
white: {
color: theme.palette.common.white
}
});
exports.styles = styles;
Whatever.js
const React = require('react');
const PropTypes = require('prop-types');
const {styles} = require('./Whatever.styles');
class Whatever extends React.Component {
constructor(props) {
super(props);
}
render() {
const {classes} = this.props;
return (
<div>
<ListItemText
disableTypography
primary={
<Typography type="body2" style={{body2: classes.white}}>
MyTitle
</Typography>
}
/>
</div>
);
}
}
Whatever.propTypes = {
classes: PropTypes.object.isRequired,
theme: PropTypes.object.isRequired
};
exports.Whatever = withStyles(styles, {withTheme: true})(Whatever);
ドキュメント ごとに、<ListItemText />
コンポーネントは、プロップprimaryTypographyProps
を公開します。これは、質問であなたが試みていることを達成するために使用できます。
const text = {
color: "red"
};
<ListItem button>
<ListItemText primaryTypographyProps={{ style: text }} primary="MyText" />
</ListItem>
お役に立てば幸いです!
Material-ui 3.xを使用している場合、次のようにします。
import { withStyles } from '@material-ui/core/styles';
const styles = {
listItemText: {
color: 'white',
},
}
class YourComponent extends Component {
...
render() {
const { classes } = this.props; // this is magically provided by withStyles HOC.
return (
<ListItem button>
<ListItemIcon>
<DashboardIcon />
</ListItemIcon>
<ListItemText classes={{ primary: classes.listItemText }} primary="My Bookings" />
</ListItem>
);
...
}
export default withStyles(styles)(YourComponent);
primary
プロパティですべてのテキスト関連スタイルを設定します。文書の奥深くに隠されているのは悲しいことです。 https://material-ui.com/api/list-item/