在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 相关文章推荐
JavaScript中跨域调用Flash的方法
Aug 11 Javascript
Shell脚本实现Linux系统和进程资源监控
Mar 05 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
javascript中对变量类型的判断方法
Aug 09 Javascript
写给小白的JavaScript引擎指南
Dec 04 Javascript
javascript简单判断输入内容是否合法的方法
May 11 Javascript
深入理解vue中的$set
Jun 01 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
解决vue路由后界面没有变化,但是链接有的问题
Sep 01 Javascript
微信小程序人脸识别功能代码实例
May 07 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 Javascript
Nest.js参数校验和自定义返回数据格式详解
Mar 29 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
默默简单的写了一个模板引擎
2007/01/02 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
原生JS实现轮播图效果
2018/10/12 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
简单实现python聊天程序
2018/04/01 Python
详解python配置虚拟环境
2019/04/08 Python
python命令行参数用法实例分析
2019/06/25 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
Vichy薇姿加拿大官网:法国药妆,全球专业敏感肌护肤领先品牌
2018/07/11 全球购物
"序列点" 是什么
2016/07/29 面试题
出国导师推荐信
2014/01/16 职场文书
创业融资计划书
2014/04/25 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
故意杀人罪辩护词
2015/05/21 职场文书