【问题标题】:Best way to use classes and styles in a react website在 React 网站中使用类和样式的最佳方式
【发布时间】:2019-11-19 06:25:00
【问题描述】:

我是从 react 开始的,我注意到很多项目中有以下编码风格:

方法一:

const Date = styled.h3`
  margin: 0 1rem 0.5rem 1rem;
  color: gray;
`

const ReadingTime = styled.h4`
  margin: 0 1rem 1.5rem 1rem;
  color: gray;
`

const Excerpt = styled.p`
  margin: 0 1rem 1rem 1rem;
  line-height: 1.6;
`

<Post>
      <Link to={`/${slug}/`}>
        <Date>{publishDate}</Date>
        <ReadingTime>{timeToRead} min read</ReadingTime>
        <Excerpt
          dangerouslySetInnerHTML={{
            __html: body.childMarkdownRemark.excerpt,
          }}
        />
      </Link>
    </Post>

方法二:

现在如果我只使用:

<Post>
          <Link to={`/${slug}/`}>
            <div className={'date'}>{publishDate}</div>
            <div className={'time'}>{timeToRead} min read</div>
            <div className={'excerpt'}
              dangerouslySetInnerHTML={{
                __html: body.childMarkdownRemark.excerpt,
              }}
            />
          </Link>
        </Post>

并在一个 css 文件中设置所有样式。

在创建 React 网站时,哪种方法是最佳实践?为什么?

【问题讨论】:

    标签: css reactjs


    【解决方案1】:

    首先,只有在从 API 获取数据时使用动态内容时,才需要将 className 名称用方括号括起来。

    您可以简单地执行以下操作:

    <Link to={slug}>
     <div className="date">{publishDate</div> 
     <div className="time">{timeToRead} min read</div>
    </Link>
    

    第一种方法用于单独设置每个 React 组件的样式。 React Styled 组件 ;).

    【讨论】:

    • 谢谢,但哪种方法更好?我注意到使用方法#1,你不必创建一个css文件,这意味着没有与文件的连接,但是方法#2不是很难维护吗?
    • 老实说,没有更好的方法。如果您使用的是 SASS 或普通 CSS,只需使用我的示例中的常规名称即可。从长远来看,第二个更干净,可读性更好!
    【解决方案2】:

    这不是最佳实践问题,而是个人偏好、团队决定或基于要求的问题。两者都在做同样的事情,即为元素设置样式,但方法完全不同。

    如果您想要基于组件、封装在组件中(范围方面)、动态(依赖于 JavaScript 样式的组件),那么请使用样式化组件。另一方面,如果你想要一些传统的、易于管理的东西,请使用 scss/css。

    您甚至可以同时使用这两种情况,这种情况经常发生。

    人们写过关于这些的文章。阅读这些以获取更多信息和说明。

    希望这会有所帮助!

    【讨论】:

    • 感谢您的帖子,我也在做一些阅读。方法#2 不会造成性能影响吗?因为根据我的理解,如果您使用样式组件,则在需要该组件时会加载该样式。所以不加载整个“css”文件。我说的对吗?
    【解决方案3】:

    我宁愿自己采用最初的方法。

    主要有两个原因:

    1. Clean Code
    2. Component segregation,最终促进Code ReusabilityDRY的原则。

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多