使用 withStyles 比使用 makeStyles 有什么好处?

IT技术 css reactjs material-ui
2021-03-26 18:24:49

每个都有不同的用例吗?什么时候应该使用 withStyles 而不是 makeStyles?

2个回答

更新此问题/答案面向 Material-UI 的 v4。我在最后添加了一些 v5 信息/链接。


所述钩APImakeStyles/useStyles)只能与功能的部件使用。

高次成分APIwithStyles)可与类组件或功能的部件使用。

它们都提供相同的功能,并没有在无差异styles的参数withStylesmakeStyles

如果您将它与函数组件一起使用,那么我建议您使用 Hook API ( makeStyles)。withStylesmakeStyles(和内部委托makeStyles相比,有一点额外的开销

如果您正在自定义 Material-UI 组件的样式,那么使用比使用withStyles您自己的组件包装它更可取,仅用于调用的目的,makeStyles/useStyles因为那样您只需重新实现withStyles.

所以包装一个 Material-UI 组件可能看起来像下面的例子(来自How to style Material-UI's tooltip?):

const BlueOnGreenTooltip = withStyles({
  tooltip: {
    color: "lightblue",
    backgroundColor: "green"
  }
})(Tooltip);

编辑工具提示自定义


对于 Material-UI v5,styled替换withStylesmakeStyles如何设计 Material-UI 的工具提示?包含 v5 示例。我还在Using conditional styles in Material-UI with styled vs JSS 中进一步讨论了 v5 样式选项

什么时候应该使用 withStyles 而不是 makeStyles?

可能永远不会,但这里有一些使用(狭义)的情况:

  • 你正在运行一个不支持钩子的react版本
  • 您正在编写一个 material-ui 库并希望支持旧的 mui 版本(withStyles 比 makeStyles 旧)
  • 您正在运行旧版 mui
  • 您想为基于类的组件设置样式,例如,如果您对componentDidCatch生命周期方法感兴趣
意味着,当您只为应用程序组件设置样式并且已经使用钩子时,您很可能还想在那里使用钩子,这意味着“makeStykes()”
2021-06-13 18:24:49
不错的 obs,但是“可能永远不会”的原因是什么?
2021-06-19 18:24:49