首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mui中的样式组件工作流-如何样式

Mui中的样式组件工作流-如何样式
EN

Stack Overflow用户
提问于 2022-07-22 10:21:23
回答 3查看 1.1K关注 0票数 0

我正在工作一个新的反应项目和使用材料ui与样式组件和有一些麻烦的造型和组织。我读过关于样式化组件和最佳实践的文章,但我仍然无法找到在大型项目中设计样式的解决方案。

我见过很多建议:

  • 为了每次创建样式化的组件,需要添加一些css,并将所有这些组件存储在styled.ts文件中。这种方法将所有的样式和布局问题移除到一个单独的文件中,但是要为所有东西创建样式化的组件需要做大量的工作。
  • 要使包装器样式化的组件围绕主响应组件并使用类名,就像定期导入css文件并使用类一样。
  • 如果需要填充或其他东西,并且只为可重用/更长的css块制作样式组件,则要进行内联css更改。没有真正分开的样式,也没有那么干净,因为我们要离开内联css,但更容易编写
  • 若要将样式化组件视为常规组件,请将它们放在单独的文件和所有内容中。组件是一个组件,不再需要区分存储和组件化。

不要说这些都是糟糕的建议,但它们是非常矛盾的,我对此没有经验。我只想知道一种可伸缩的方法。

tldr:是否有一个好的、干净的工作流程来处理大型项目的样式组件?

EN

回答 3

Stack Overflow用户

发布于 2022-07-22 11:42:36

Material UIstyled-components在应用中达到了不同的目的。MUI有由其他人编写的ui,您可以在应用程序中使用它来节省时间,但是您必须使用定制的css来定制它们。styled-component将帮助您组织自定义css。

样式组件使应用程序更加干净(比CSS具有最好的可读性)和易于维护(比CSS更好的可维护性)。

  • 这样可以很容易地识别正在使用的css,并且可以轻松地删除未使用的样式。
  • 它使动态造型非常简单,通过道具与全球主题。
  • 您可以在项目中的任何地方导入您的样式并重用它。

您应该根据您的方便性,在项目中的任何地方创建style.js / style.ts。作为最佳实践,您应该创建一个/多个global\style.js,在这里您可以保留项目的所有可重用组件。和style.js在您的组件文件夹中的styles专用于该组件。

要想在JS模式中使用CSS (在您的例子中是styled-component)中获得最大的好处,您应该将它与styled-system一起使用,它将帮助您轻松地使ui组件以最小的代码响应,并帮助为您的应用程序构建最佳的可重用组件。参见这里的详细信息,样式系统

以下是一些您需要使用样式系统的示例,

假设您希望创建一个卡片容器,以便在应用程序UI中的任何地方使用,

代码语言:javascript
复制
import theme from './themes/theme';
import styled from 'styled-components';
export const Card = styled.div`
  transition: ....;
  background: ${(props) => (props.backColor || theme.colors.defaultColor)};
  box-shadow: 1px 1px 1px rgb(. . . / .%);
  border-radius: 8px;
  ...
`;

在应用程序中的任何地方使用它,

代码语言:javascript
复制
  import {Card, ..} from './style.js'
    
    <Card>
      ....
    </Card>
    
    <Card backColor={'#some-color-code'}>
      ....
    </Card>
票数 1
EN

Stack Overflow用户

发布于 2022-07-22 14:30:06

在我的项目中,我使用了这样的东西。我使用了来自Material UI的组件,并将它传递到styled-components中,这样我就可以编写普通的CSS了。覆盖材料UI样式是一个蛋糕步行,因为我可以查找MUI文档,以找到适当的类名,并覆盖它的样式。

此外,从该文件返回的组件只不过是一个实质性UI组件本身,而是一个样式化的版本。这允许我在我的JSX代码中使用所有与MUI相关的道具。

代码语言:javascript
复制
import { Button } from "@material-ui/core";
import styled from "styled-components";

export const StyledButton = styled(Button)`
  &.MuiButton-root {
    border-radius: 5px;
    font-family: ${fonts.heebo};
    font-style: normal;
    font-weight: normal;
    font-size: 14px;
    line-height: 24px;
  }
`;

希望这能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2022-07-30 23:56:52

我花了很多时间自己回答一个类似的问题:如何最好地在MUI中创建自定义样式组件

恐怕答案是,MUI没有一个好的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73078765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档