在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做得动态表格(注释写的很清楚)
Dec 29 Javascript
javascript常见操作汇总
Sep 03 Javascript
jQuery修改class属性和CSS样式整理
Jan 30 Javascript
jQuery操作基本控件方法实例分析
Dec 31 Javascript
微信小程序 聊天室简单实现
Apr 19 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
May 07 Javascript
动手写一个angular版本的Message组件的方法
Dec 16 Javascript
javaScript中的空值和假值
Dec 18 Javascript
express默认日志组件morgan的方法
Apr 05 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
Sep 14 Javascript
uni-app之APP和小程序微信授权方法
May 09 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
E路文章系统PHP
2006/12/11 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
简单JS代码压缩器
2006/10/12 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
python 追踪except信息方式
2020/04/25 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
自荐信要包含哪些内容
2013/11/06 职场文书
廉政教育心得体会
2014/01/01 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
保密工作整改报告
2014/11/06 职场文书
实习生辞职信范文
2015/03/02 职场文书
党员干部学习心得体会
2016/01/23 职场文书
Java实现二分搜索树的示例代码
2022/03/17 Java/Android
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js