Jir*_*pes 6 reactjs material-ui
我想在我自己的基于类的组件的部分中使用一个主题。我什么都做不了,文档中的所有示例都是针对功能组件的。基本上,主题已定义,我想用它来设计我自己的组件的样式,这样我就可以避免重复自己并在更高级别更改代码,并且随处更改。
我的 App.js
import { ThemeProvider } from '@material-ui/styles';
import { createMuiTheme } from '@material-ui/core/styles';
const theme = createMuiTheme({
palette: {
primary: {
light: '#757ce8',
main: '#3f50b5',
dark: '#002884',
contrastText: '#fff',
},
},
overrides: {
MuiOutlinedInput: {
disabled: true,
input: {
color: 'red'
}
}
}
});
export default class App extends React.Component {
render() {
return (
<ThemeProvider theme={theme}>
<Nav />
</ThemeProvider>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题文件,Nav.js
import React from 'react';
import SearchBar from './SearchBar';
import { makeStyles } from '@material-ui/styles';
const styles = makeStyles(theme => ({
root: {
background: theme.background,
},
}));
class Nav extends React.Component {
render() {
const classes = styles();
return(
<div className={classes.root}>
<SearchBar />
</div>
)
}
}
export default Nav;
Run Code Online (Sandbox Code Playgroud)
您不能makeStyles与类组件一起使用。makeStyles返回一个只能在函数组件中使用的自定义钩子。对于类组件,您可以使用withStyles来利用所有相同的功能。withStyles包装你的组件并注入一个classesprop。
以下是基于您问题中的代码的工作示例:
import React from "react";
import { withStyles } from "@material-ui/core/styles";
class SearchBar extends React.Component {
render() {
return <div>My Search Bar</div>;
}
}
const styles = theme => ({
root: {
backgroundColor: theme.palette.primary.main,
color: theme.palette.primary.contrastText
}
});
class Nav extends React.Component {
render() {
return (
<div className={this.props.classes.root}>
<SearchBar />
</div>
);
}
}
export default withStyles(styles)(Nav);
Run Code Online (Sandbox Code Playgroud)
相关回答:
| 归档时间: |
|
| 查看次数: |
6006 次 |
| 最近记录: |