zoukankan      html  css  js  c++  java
  • React开发常用设计模式-组件样式

    React 是视图层。因此,它可以控制在浏览器中渲染的标记。众所周知,页面上的 HTML 标记与 CSS 的样式是紧密联系在一起的。有几种方式来处理 React 应用的样式,接下来介绍这些最流行的方式。

    组件样式

    经典 CSS 类

    JSX 语法相当接近于 HTML 语法。因此,拥有与 HTML 几乎相同的标签属性,仍然可以使用 CSS 类来处理样式。类是定义在外部的 .css文件中的。唯一需要注意的是 React 中使用的是 className,而不是 class 。例如:

    1 <h1> className='title'>Styling</h1>

    内联样式

    内联样式也能很好的工作。类似于 HTML ,可以通过 style 属性来直接传入样式。但是,style 属性在 HTML 中是字符串,而在 JSX 中必须得是一个对象。

    1 const inlineStyles = {
    2   color: 'red',
    3   fontSize: '10px',
    4   marginTop: '2em',
    5   'border-top': 'solid 1px #000'
    6 };
    7 
    8 <h2 style={ inlineStyles }>Inline styling</h2>

    因为用 JavaScript 编写样式,所以从语法角度来看,是有一些限制的。如果想要使用原始的 CSS 属性名称,那么需要用引号包裹起来,否则需要遵循驼峰式命名规则。但是,使用 JavaScript 编写样式却非常有趣,它比普通的 CSS 更具灵活性。例如样式的继承:

    1 const theme = {
    2   fontFamily: 'Georgia',
    3   color: 'blue'
    4 };
    5 const paragraphText = {
    6   ...theme,
    7   fontSize: '20px'
    8 };

    theme中有一些基础样式,然后在 paragraphText 中混入 theme 的样式。简而言之,能够使用 JavaScript 的全部能力来组织 CSS 。重要的是最终生成了一个传给 style 属性的对象。

    CSS 模块

    CSS 模块 是建立在到目前为止所介绍过的内容之上的。如果你不喜欢 JavaScript 用法来写 CSS ,那么可以使用 CSS 模块,它可以让继续编写普通的 CSS 。通常,这个库是在打包阶段发挥作用的。可以将它作为编译步骤的一部分进行连接,但通常作为构建系统插件分发。

    下面的示例可以让你快速对其运行原理有个大致的了解:

     1 /* style.css */
     2 .title {
     3   color: green;
     4 }
     5 
     6 // App.jsx
     7 import styles from "./style.css";
     8 
     9 function App() {
    10   return <h1 style={ styles.title }>Hello world</h1>;
    11 }

    默认情况下是无法这样使用的,只有使用了 CSS 模块,才能直接导入普通的 CSS 文件并使用其中的类。

    当提到 普通的 CSS ,并非真的指最原始的 CSS 。它支持一些非常有用的组合技巧。例如:

    1 .title {
    2   composes: mainColor from "./brand-colors.css";
    3 }

    Styled-components

    Styled-components 则是另一种完全不同的方向。此库不再为 React 组件提供内联样式。需要使用组件来表示它的外观感受。例如,创建了 Link组件,它具有特定的风格和用法,而再使用 <a>标签。

    1 const Link = styled.a`
    2   text-decoration: none;
    3   padding: 4px;
    4   border: solid 1px #999;
    5   color: black;
    6 `;
    7 
    8 <Link href='http://google.com'>Google</Link>

    还有一种扩展类的机制。还可以使用 Link 组件,但是会改变它的文字颜色,像这样:

    1 const AnotherLink = styled(Link)`
    2   color: blue;
    3 `;
    4 
    5 <AnotherLink href='http://facebook.com'>Facebook</AnotherLink>

    到目前为止 styled-components 可能是多种处理 React 样式的方法中我最感兴趣的。用它来创建组件非常简单,并可以忘记样式本身的存在。如果你的公司有能力创建一个设计系统并用它构建产品的话,那么这个选项可能是最合适的。

    结语

    处理 React 应用的样式有多种方式。在生产环境中试验过所有方式,可以说无所谓对与错。正如 JavaScript 中大多数技术一样,你需要挑选一个更适合你的方式。

  • 相关阅读:
    Windows平台使用Gitblit搭建Git服务器图文教程
    yapi部署文档
    Yapi学习笔记
    利用微软认知服务实现语音识别功能
    对.Net Core结合Docker和Jexus的实践
    python-集合、字典
    python-文件操作
    python-函数
    python-运算、分支、深浅拷贝
    linux下的文件结构
  • 原文地址:https://www.cnblogs.com/jszhp/p/10239991.html
Copyright © 2011-2022 走看看