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

标签 css reactjs material-ui

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

最佳答案

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


Hook API (makeStyles/useStyles) 只能与函数组件一起使用。

Higher-order component API (withStyles) 可以与类组件或函数组件一起使用。

它们都提供相同的功能,并且 withStylesmakeStylesstyles 参数没有区别。

如果您将它与函数组件一起使用,那么我建议您使用 Hook API (makeStyles)。与 makeStyles 相比,withStyles 有一些额外的开销(并且在内部委托(delegate)给 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);

Edit Tooltip customization


对于 v5 的 Material-UI,styled 替换了 withStylesmakeStylesHow to style Material-UI's tooltip?包含 v5 示例。我还在 Using conditional styles in Material-UI with styled vs JSS 中进一步讨论了 v5 样式选项。 .

关于css - 使用 withStyles 比使用 makeStyles 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57697664/

相关文章:

html - 在图像上滑动文本 : How to Keep Footer Below All Elements

css - 如何在 div 标签中换行?

jquery - 无法使用 jquery 覆盖 css 属性

reactjs - React Router - 如何确定后退按钮是否被点击?

reactjs - 同构/通用渲染的 React 15 应用程序因 Cloudflare HTTP 代理而中断 ("orange cloud")

reactjs - 如何在 Material UI makestyles 中使用媒体查询

reactjs - Material-UI 样式和 html/markdown

CSS Float 使内容在较小的屏幕上下降

reactjs - 在 React.js 中,使用 flexGrow 时得到错误的 clientHeight

javascript - 如何更改Material-UI Chip的字体大小