在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 相关文章推荐
TextArea 控件的最大长度问题(js json)
Dec 16 Javascript
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
Feb 27 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
理解JavaScript事件对象
Jan 25 Javascript
JS匿名函数实例分析
Nov 26 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
Mar 20 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
Oct 21 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读取和保存base64编码的图片内容
2017/04/22 PHP
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
Python实现查找系统盘中需要找的字符
2015/07/14 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
基于Python实现天天酷跑功能
2021/01/06 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
如何清空Session
2015/02/23 面试题
汉语专业应届生求职信
2013/10/01 职场文书
村捐赠仪式答谢词
2014/01/21 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
甜品店创业计划书
2014/09/21 职场文书
基层工作经验证明样本
2014/11/16 职场文书
2015年教师节主持词
2015/07/03 职场文书
聘任通知书
2015/09/21 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL