在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 相关文章推荐
JXTree对象,读取外部xml文件数据,生成树的函数
Apr 02 Javascript
javascript setTimeout和setInterval 的区别
Dec 08 Javascript
jquery easyui的tabs使用时的问题
Mar 23 Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 Javascript
浅谈javascript对象模型和function对象
Dec 26 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
Jan 06 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
详解React native全局变量的使用(跨组件的通信)
Sep 07 Javascript
vue debug 二种方法
Sep 16 Javascript
微信小程序开发实现消息推送
Nov 18 Javascript
webpack+express实现文件精确缓存的示例代码
Jun 11 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
Aug 07 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中变量引用与变量销毁机制分析
2014/11/15 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
javascript实现的网页局布刷新效果
2008/12/01 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Python进程间通信Queue实例解析
2018/01/25 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
中间件分为哪几类
2012/03/14 面试题
个人自我剖析材料
2014/09/30 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
超市工作总结范文2014
2014/12/19 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android