在create-react-app中使用css modules的示例代码


Posted in Javascript onJuly 31, 2018

前言

如果我们从零开始用webpack + es6来结合react开发前端应用,那势必会在各种webpack配置中消耗大量精力,于是便有了各种脚手架,create-react-app就是其中之一。
对于css modules,在react中,通常用它来避免预料之外样式规则相互覆盖以及实现其他功能。

配置弹出配置文件

如果直接使用create-react-app搭建一个项目,所有的配置文件都被隐藏了,整个目录就先这样

在create-react-app中使用css modules的示例代码 

所以,第一步是将所有的配置文件弹出,在根目录运行以下代码

npm run eject

弹出之后的文件目录就先这样

在create-react-app中使用css modules的示例代码 

多了script与config两个文件夹

配置相关文件

打开config文件夹

在create-react-app中使用css modules的示例代码 

我们需要配置webpack.config.dev.js,如果需要将项目打包输出的话还得配置webpack.config.prod.js,不过两个文件配置方法是相同的,以webpack.config.dev.js为例。

搜索css-loader,找到这段代码

在create-react-app中使用css modules的示例代码 

如果没有配置css modules的话,options中是没有modules选项的,将其设置上即可

使用

我们以一个todo项目的list组件为例简单介绍一下在react中使用css modules。这个list组件就是一个ul将要做的事项列出来,效果如下

在create-react-app中使用css modules的示例代码 

吃饭、碎觉就是list组件的展示

先来看css怎么写,很简短的代码如下

.theList{
  list-style: none;
  padding-left: 0;
  width: 255px;
}

.theList li{
  color: #333;
  background: rgba(255,255,255,0.5);
  padding: 15px;
  margin-bottom: 15px;
  border-radius: 5px;
  cursor: pointer;
}

文件名就叫TodoItem.css

jsx文件如下

import React from 'react';
import styles from './TodoItem.css';

class TodoItem extends React.Component {
  constructor(props){
    super(props);
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(e){
    this.props.onDelete(e.target.getAttribute('name'));
  }

  render(){
    let todoEntries = this.props.entries;
    return (
      <!-- 引用样式 -->
      <ul className={styles.theList}>
        {todoEntries.map((item)=>{
          return (
            <li key={item.key} onClick={this.handleChange} name={item.key}>{item.text}</li>
          )
        })}
      </ul>
    )
  }
}

export default TodoItem;

这样,我们在控制台中查看

在create-react-app中使用css modules的示例代码 

在create-react-app中使用css modules的示例代码 

在create-react-app中使用css modules的示例代码 

相关className被编译成哈希字符串,而且在不同文件中引入哈希字符串并不相同

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery imgareaselect 使用利用js与程序结合实现图片剪切
Jul 30 Javascript
javascript时区函数介绍
Sep 14 Javascript
Jquery动态改变图片IMG的src地址示例
Jun 25 Javascript
jquery each的几种常用的使用方法示例
Jan 21 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
javascript文本模板用法实例
Jul 31 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
使用D3.js制作图表详解
Aug 13 Javascript
axios发送post请求springMVC接收不到参数的解决方法
Mar 05 Javascript
vue中的模态对话框组件实现过程
May 01 Javascript
详解Puppeteer前端自动化测试实践
Feb 21 Javascript
vue项目配置同一局域网可使用ip访问的操作
Oct 23 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 #Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 #jQuery
Vue导出页面为PDF格式的实现思路
Jul 31 #Javascript
详解微信小程序实现WebSocket心跳重连
Jul 31 #Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 #Javascript
JS构造一个html文本内容成文件流形式发送到后台
Jul 31 #Javascript
vue导出html、word和pdf的实现代码
Jul 31 #Javascript
You might like
PHP新手上路(十二)
2006/10/09 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
PHP crc32()函数讲解
2019/02/14 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
layui导航栏实现代码
2017/05/19 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
Python subprocess模块学习总结
2014/03/13 Python
使用Python生成url短链接的方法
2015/05/04 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
python框架django基础指南
2016/09/08 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
财政局长自荐信范文
2013/12/22 职场文书
外联部演讲稿
2014/05/24 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
简历中自我评价范文
2015/03/11 职场文书
律师催款函范文
2015/06/24 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
如何在Python项目中引入日志
2021/05/31 Python
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
SQL Server使用导出向导功能
2022/04/08 SQL Server