React 中五种常见的样式策略(下)

简介: 今天一起来看看React中实现样式的五种常见策略~

下面来将JSS和内联样式进行对比。


内联样式:

import React from 'react'
const Button = () => {
  const buttonGreen = {
    backgroundColor: "green",
    border: "1px solid white",
    borderRadius: "2px"
  };
  return(
    <button style={buttonGreen}>
      green
    </button>
  )
}
复制代码


React-JSS:

import React from 'react'
import {createUseStyles} from 'react-jss'
const useStyles = createUseStyles({
  buttonGreen: {
    backgroundColor: "green",
    border: "1px solid white",
    borderRadius: "2px"
  }
})
const Button = () => {
  const {buttonGreen} = useStyles()
  return(
    <button className={buttonGreen}>
      green
    </button>
  )
}
复制代码


可以看到,相对于普通的内联样式,React-JSS的特征如下:

  • 导入了一个createUseStyles方法;
  • 通过createUseStyles方法方法创建一个useStyles hook;
  • 通过参数对象的方式将样式传递给createUseStyles方法;
  • 通过解析useStyles hook的返回值获取到组件样式buttonGreen;
  • 将buttonGreen传递给组件的className进行解析。

那如果想要传递props,两者又会有什么不同的呢?接着来看:


内联组件:

import React from 'react'
const Button = ({backgroundColour, children}) => {
  const buttonStyles = {
    backgroundColor: backgroundColour,
    border: "1px solid white",
    borderRadius: "2px"
  };
  return(
    <button style={buttonStyles}>
      {children}
    </button>
  )
}
复制代码


React-JSS:

import React from 'react'
import {createUseStyles} from 'react-jss'
const useStyles = createUseStyles({
    buttonStyles: {
      backgroundColor: backgroundColour => backgroundColour,
      border: "1px solid white",
      borderRadius: "2px"
    }
})
const Button = ({backgroundColour, children}) => {
  const {buttonStyles} = useStyles(backgroundColour)
  return(
    <button className={buttonStyles}>
      {children}
    </button>
  )
}
复制代码


可以通过以下方式来调用上面的组件:

import React from 'react';
import Button from 'Button';
const SomePage = () => (
  <Button backgroundColour="blue">blue</Button>
)
复制代码


这里的区别也是显而易见的,需要将传递的props的值传给useStyles方法,这样就可以在createUseStyles中使用了。这就是React-JSS的基本使用了。下面来看看它的优缺点

React-JSS的优点:


  • 可重用性: 组件是可重用的,所以一次编写即可在任何地方使用它们;
  • 动态样式: 可以使用props动态设置样式;
  • 局部范围: JSS支持局部样式。

React-JSS的缺点:


  • 额外的层: 使用React-JSS库会使得React程序多一个额外的层,这个有时是不必要的;
  • 代码可读性: 通过这种方式也会自动生成类名,它们都是唯一的,可阅读性较差,


尤其是在浏览器进行调试时,难以确定这个样式是在哪里定义的。

上面介绍了五种常用的React样式策略,这五种策略并没有绝对的好或坏,都各有优缺点,可以根据实际的业务场景去使用。


相关文章
|
12月前
|
前端开发 算法 JavaScript
React-组件-内联样式 和 React-组件-列表渲染优化
React-组件-内联样式 和 React-组件-列表渲染优化
82 0
|
5月前
|
前端开发 JavaScript
react 修改 antdesign 的 组件默认样式
react 修改 antdesign 的 组件默认样式
210 0
|
2月前
|
前端开发 Java UED
瞬间变身高手!JSF 与 Ajax 强强联手,打造极致用户体验的富客户端应用,让你的应用焕然一新!
【8月更文挑战第31天】JavaServer Faces (JSF) 是 Java EE 标准的一部分,常用于构建企业级 Web 应用。传统 JSF 应用采用全页面刷新方式,可能影响用户体验。通过集成 Ajax 技术,可以显著提升应用的响应速度和交互性。本文详细介绍如何在 JSF 应用中使用 Ajax 构建富客户端应用,并通过具体示例展示 Ajax 在 JSF 中的应用。首先,确保安装 JDK 和支持 Java EE 的应用服务器(如 Apache Tomcat 或 WildFly)。
33 0
|
2月前
|
前端开发 JavaScript 大数据
React与Web Workers:开启前端多线程时代的钥匙——深入探索计算密集型任务的优化策略与最佳实践
【8月更文挑战第31天】随着Web应用复杂性的提升,单线程JavaScript已难以胜任高计算量任务。Web Workers通过多线程编程解决了这一问题,使耗时任务独立运行而不阻塞主线程。结合React的组件化与虚拟DOM优势,可将大数据处理等任务交由Web Workers完成,确保UI流畅。最佳实践包括定义清晰接口、加强错误处理及合理评估任务特性。这一结合不仅提升了用户体验,更为前端开发带来多线程时代的全新可能。
29 0
|
2月前
|
缓存 前端开发 JavaScript
深入探索优化React应用程序的策略
【8月更文挑战第20天】
33 0
|
4月前
|
JSON 弹性计算 前端开发
函数计算产品使用问题之遇到在自定义运行时部署React项目时遇到样式无法正常加载。一般是什么导致的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
前端开发 JavaScript 安全
【亮剑】探讨了在React TypeScript应用中如何通过道具(props)传递CSS样式,以实现模块化、主题化和动态样式
【4月更文挑战第30天】本文探讨了在React TypeScript应用中如何通过道具(props)传递CSS样式,以实现模块化、主题化和动态样式。文章分为三部分:首先解释了样式传递的必要性,包括模块化、主题化和动态样式以及TypeScript集成。接着介绍了内联样式的基本用法和最佳实践,展示了一个使用内联样式自定义按钮颜色的例子。最后,讨论了使用CSS模块和TypeScript接口处理复杂样式的方案,强调了它们在组织和重用样式方面的优势。结合TypeScript,确保了样式的正确性和可维护性,为开发者提供了灵活的样式管理策略。
64 0
|
5月前
|
前端开发 容器
第十八章 React中的样式模块化处理
第十八章 React中的样式模块化处理
|
11月前
|
前端开发
react解决页面样式冲突(module)
react解决页面样式冲突(module)
|
12月前
|
前端开发
React-组件-外链样式
React-组件-外链样式
45 0