[翻译]程式化React组件的4种方法

哈Ha! 我向您介绍了“样式化React组件的四种方式”一文的翻译。



迄今为止,已经开发了许多样式化React组件的方法。 从库到使用传统CSS文件。 选择范围很广,很可能会根据您的喜好进行选择。 这是四种样式化React组件的方法。

内联CSS


由于JSX转换为HTML元素,因此可以使用style属性。 只需将带有属性的对象传递给元素,即可将样式应用于元素。 它看起来像这样:



但是,这种方法非常有限。 它不能使用伪选择器,例如:悬停以及媒体查询。 但这并不意味着不应使用它。 当只有2个或3个不需要伪选择器或媒体查询的属性时,和/或需要在样式中使用条件的情况下,可以使用它。

样式库


我喜欢学习新的库或框架。 该方法是我最喜欢的React样式样式。 有很多样式库,它们不仅可以样式化组件,还可以提供附加的“超级功能”(如我所说),以及使事情变得更加轻松的所有CSS功能。

一个用法示例可能如下所示:



上面是使用样式化组件库的示例。

包装器称为样式化组件。 样式是在Wrapper常量中定义的,该常量仅使用这些样式创建一个组件。 只需确定所需的元素类型即可,例如:div,标头或img,并像使用React组件一样使用它。 不使用HTML元素,而仅使用组件,这使得代码更简洁,更易于阅读。

这只是我的偏爱。 也许您喜欢使用div或查看本机HTML元素。 没问题! Khan Academy开发了Aphrodite库,该库使用HTML元素,但使用className属性将样式附加到组件。

我在阿芙罗狄蒂上的文章

这些库还具有许多其他功能,可让您执行出色的工作。 有许多库,因此您只需要尝试看看哪个库将与您同在。

以下是目前最受欢迎的两个:

https://www.styled-components.com/
https://glamorous.rocks/

外部风格


您可以在外部CSS文件中编写样式,并在需要时将其导入到组件中。 这可能是您开始学习React时所学的第一种方法。 但是,添加其他元素时,命名存在问题。 所有样式都在全球范围内。 例如,您有两个由您或您的队友创建的具有相同名称的项目,在这种情况下,您可能会遇到此问题。

CSS模块


CSS模块与在外部文件中编写CSS非常相似。 唯一的区别是样式是封装的,这与外部CSS文件的传统用法相反。 这意味着样式将不会相互冲突或覆盖。 您使用与传统CSS中相同的方法。 它还允许使用所有好的方法,例如BEM。 您可以在这里阅读更多内容:

https://github.com/css-modules/css-modules

因此,您不必决定使用:传统CSS,CSS模块,Inline CSS,用于样式的库或这些方法的组合,我认为,所有这些都取决于您的喜好和团队的喜好。

感谢您的阅读。 发现错误? 随时告诉我关于她的事。 祝你有美好的一天!

Source: https://habr.com/ru/post/zh-CN419207/


All Articles