在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 相关文章推荐
来自qq的javascript面试题
Jul 24 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
Nov 07 Javascript
JS两种定义方式的区别、内部原理
Nov 21 Javascript
js判断鼠标位置是否在某个div中的方法
Feb 26 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
AngularJS辅助库browserTrigger用法示例
Nov 03 Javascript
JS 全屏和退出全屏详解及实例代码
Nov 07 Javascript
Javascript 制作图形验证码实例详解
Dec 22 Javascript
Angular.js中$resource高大上的数据交互详解
Jul 30 Javascript
4个顶级开源JavaScript图表库
Sep 29 Javascript
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
详解使用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
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
jQuery 1.0.2
2006/10/11 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
JS中的多态实例详解
2017/10/15 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
让python json encode datetime类型
2010/12/28 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Django工程的分层结构详解
2019/07/18 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
Python过滤序列元素的方法
2020/07/31 Python
python 制作简单的音乐播放器
2020/11/25 Python
使用django自带的user做外键的方法
2020/11/30 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
怎样创建、运行java程序
2014/08/01 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
中医药大学市场营销专业自荐信
2013/09/29 职场文书
生物科学系大学生的自我评价
2013/12/20 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
初中语文教学随笔
2015/08/15 职场文书
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis