MUI v5 Typescript makeStyles 从不返回

IT技术 reactjs typescript material-ui jss
2021-04-27 16:07:07

我正在尝试将我的组件从 MUI v4 迁移到 v5,但我已经到了不知道如何迁移我的makeStyles组件的地步

之前,我有这样的工作:

const useStyles = makeStyles((theme: Theme) => ({
  paper: {
    padding: theme.spacing(2),
    someMore: 'styles'
  }
}));
// ...

const Component: FC = () => {
  const theme = useTheme();
  const classes = useStyles(theme);

   return (
      <Paper elevation={3} className={classes.paper}>
         <Stuff />
      </Paper>
   )
}

现在我在useStyles通话中遇到错误

此表达式不可调用。类型“从不”没有调用签名.ts(2349)

这种情况下的解决方法是什么?

1个回答

你不能使用makeStylesfrom @mui/material(如果你这样做,你会得到一个错误),因为它已被移动到@mui/stylesasmakeStyles被标记为已弃用。这就是为什么类型是never; 它不存在!该函数是空的,其唯一目的是告诉您makeStyles现在位于何处

@mui/styles是一个遗留包,不建议在 v5 中使用。请参阅答案以了解有关两者之间差异的更多信息。对于替代方案,您可以使用styled/ sxprop