Вы можете преобразовать его в хук useStyles и передать пропу самостоятельно:
// @flow
import * as React from 'react';
import makeStylesfrom '@material-ui/core/styles/makeStyles';
import type { Theme } from '@material-ui/core/styles/createMuiTheme';
import classnames from 'classnames';
export const useStyles = makeStyles((theme: Theme) => ({
root: {
backgroundColor: ({color}) => color === 'primary' ? theme.palette.primary.main : theme.palette.secondary.main,
width: '80px',
height: '80px',
},
colorPrimary: {
backgroundColor: ({color}) => color === 'primary' ? theme.palette.primary.main : theme.palette.secondary.main,
},
colorSecondary: {
backgroundColor: ({color}) => color === 'primary' ? theme.palette.primary.main : theme.palette.secondary.main,
},
}));
export type Props = {
className?: string,
color?: string,
};
const TMPask = ({ color }: Props) => {
const classes = useStyles({color})
return <div
className={classes.root}
>
hello
</div>
};
TMPask.defaultProps = {
className: undefined,
color: 'Primary',
};
export default TMPask;
Я не уверен, что делает ваш className
, но я думаю, что его также можно удалить сейчас.
Более быстрый способ - прямой доступ к реквизиту, поскольку объект стиля также принимает функции для каждого значения. Это позволяет получить доступ ко всем реквизитам, переданным компоненту. И так как вы все равно передаете ему «цвет»:
export const styles = (theme: Theme) => ({
root: {
backgroundColor: ({color}) => color === 'primary' ? theme.palette.primary.main : theme.palette.secondary.main,
width: '80px',
height: '80px',
},
colorPrimary: {
backgroundColor: ({color}) => color === 'primary' ? theme.palette.primary.main : theme.palette.secondary.main,
},
colorSecondary: {
backgroundColor: ({color}) => color === 'primary' ? theme.palette.primary.main : theme.palette.secondary.main,
},
});