在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 相关文章推荐
轻量级 JS ToolTip提示效果
Jul 20 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
Jun 28 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 Javascript
对js关键字命名的疑问介绍
Apr 25 Javascript
在JavaScript中使用timer示例
May 08 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
Aug 21 Javascript
AngularJS 2.0入门权威指南
Oct 08 Javascript
js轮播图无缝滚动效果
Jun 17 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
Jun 12 Javascript
JavaScript继承的三种方法实例
May 12 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
PHP4实际应用经验篇(2)
2006/10/09 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
php7下的filesize函数
2019/09/30 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
js表头排序实现方法
2015/01/16 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
原生js实现随机点名
2020/07/05 Javascript
[48:46]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第二场 11.19
2020/11/19 DOTA
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
如何定义TensorFlow输入节点
2020/01/23 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
基于Python的OCR实现示例
2020/04/03 Python
golang/python实现归并排序实例代码
2020/08/30 Python
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
服装发布会策划方案
2014/05/22 职场文书
体育节口号
2014/06/19 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书