第三天

01:在组件中使用style行内对象并封装样式对象:

CmtItem.jsx:

import React from 'react'

//第一层封装 将样式对象和UI结构分离

// const itemStyle = { border: '1px dashed #ccc', margin: '10px', padding: '10px', boxShadow: '0 0 10px #ccc' }

// const userStyle = { fontSize: '14px' }

// const contentStyle = { fontSize: '12px' }

//第二层封装 合并成一个大的样式对象

//const styles = {

//     item: { border: '1px dashed #ccc', margin: '10px', padding: '10px', boxShadow: '0 0 10px #ccc' }

//     user: { fontSize: '14px' },

//     content: { fontSize: '12px' }

// }

//第三层封装 抽离为单独的样式表模块

import style from '@/components/styles';

//使用 function 构造函数,定义普通的无状态组件

export default function CmtItem(props) {

return (

<div style={style.item}>

{

<div key={props.id}>

<h1 style={style.user}>评论人:{props.user}</h1>

<p style={style.content}>评论内容:{props.content}</p>

</div>

}

</div>

)

}

02:使用css样式表美化组件

第一步:

npm install style-loader style-loader css-loader –save-dev

第二步:

webpack.config.js:

webpack发现.css文件后会从右往左的顺序先交给css-loader来处理,然后交给style-loader来处理,然后交给webpack进行打包

第三步:

第四步:

03.演示React中使用普通css样式表的作用域冲突问题

直接引入的组件是全局作用域生效的,

在Vue.js中可以通过<style scoped></style> 来解决这个问题,在React中,没有scoped,因为React.js根本没有指令的概念

04.为普通样式表通过modules参数启用模块化

第一步:启用模块化

第二步:对象.类名

05.使用localldentName来自定义模块化的类名

webpack.config.js:

npm run dev:

06.通过local和gobal设置类名是否被模块化

默认情况下,不用写:local() 所有类名和id都被模块化了。

07.在项目中为scss和less文件启用模块化

npm install bootstrap@3.3.7 –save

import bootcss from 'bootstrap/dist/css/bootstrap.css'

发现报错

npm install url-loader -D//打包处理字体文件的loader

url-loader依赖于file-loader:

npm install file-loader –D//安装下file-loader

//自己规定 第三方的样式表 都是以.css结尾

//自己的样式表,都要以.scss或.less结尾 这样,我们不要为普通的.css启用模块化

//自己的样式表,都要以.scss或.less结尾,只为.scss或.less文件启用模块化

npm install sass-loader node-sass –D

##在项目中启用模块化并同时使用bootstrap

  1. 把 自己的样式表,定义为.scss文件
  2. 把第三方的样式表,还是以.css结尾
  3. 我们只需要为自己的.scss文件,启用模块化即可
  4. 运行npm install sass-loader node-sass –D安装能够解析scss文件的loader

(这个没有写错,就是写sass 虽然是解析scss)

然后就可以这么用了

也不用再暴露什么了:

08.在React中为按钮绑定点击事件

React中事件使用camelCase

原生的JavaScript中使用onlick在React中使用onClick

问题:为什么这里调用的时候要用this呢?

答:

在一个实例方法中调用另外的方法,要写this。render函数就是一个实例方法。

在React中使用最多的事件绑定方式是

<button onClick={()=>this.show(‘传参’)}>按钮</button>

//事件的处理函数,需要定义为 一个箭头函数然后赋值给 函数名称

show = (arg1)=>{

console.log(‘show方法’ + arg1 )

}

09.使用this.setState来修改state上的数据

在React中,如果要修改数据,不要使用this.state.msg = … 这样直接修改。

而是应该使用 this.setState({msg:…})

示例代码:

import React, { Component } from 'react'

import { ENGINE_METHOD_DIGESTS } from 'constants';

export default class BindEvent extends Component {

constructor() {

super()

this.state = {

msg:'哈哈',

}

}

render() {

return (

<div>

{/* 需求 点击按钮,修改msg的值 */}

<button onClick={() => this.show('

React 第三天的更多相关文章

  1. React Native 三端同构

    React Native 三端同构 https://www.ibm.com/developerworks/cn/web/wa-universal-react-native/index.html rea ...

  2. 从0开始学习react(三)

    这次我们来讲解第三节知识,考虑了下,先不去讲什么理论了,毕竟网上一搜一大堆,而且理论真心看不太懂啊!!! 今天我们就直接上实例喽! 大家HIGH起来!!!(想了好久,还是没舍得删这句话) 1.根据下图 ...

  3. React内三种函数的写法

     以下提供三种React内函数的写法,都可以正常运行,有疑问可以留言 写法一:让函数内部的this指向这个类的实例,它是用bind实现的,bind的第一个参数表示context,就是this. //写 ...

  4. React Native 三:样式

    一.声明和使用样式 1.React Native里面的样式和使用如以下所看到的.StyleSheet.create这个构造函数不是必须的. index.android.js文件 import Reac ...

  5. 前端笔记之React(三)使用动态样式表&antd&React脚手架&props实战

    一.使用动态样式表 1.1 LESS使用 全局安装Less npm install -g less 创建1.less文件,然后可以用lessc命令来编译这个文件: lessc 1.less 1.css ...

  6. 从 Vue 的视角学 React(三)—— 事件处理

    如果要处理某个元素的 click 事件,原生 js 可以直接为该元素添加一个 onclick 函数 Vue 封装了 v-on 指令,可以简化为 @click 并添加相应的函数 React 的开发思想是 ...

  7. 为什么学习React Native三点原因

    React Native不到两岁,兼容Android平台刚刚1年.我学习React Native其实也就不到1年,不算长,也不算短. Paul Graham在文章中写过:大多数人真正注意到你的时候,不 ...

  8. react第三单元(react组件的生命周期)

    第三单元(react组件的生命周期) #课程目标 灵活掌握react组件的生命周期以及组件的活动过程. 能够灵活使用react的生命周期 #知识点 react的类组件的生命周期分为三个阶段 实例期 存 ...

  9. React组件三

    <script> <!-- getDefalutPros 设置组件的默认值--> <!--var Mytitle=React.createClass({ getDefau ...

随机推荐

  1. solarwinds之监控路由器

    配置路由器开启SNMP功能 1.         开启路由器的SNMP功能,并指定两个共同体名   网络扫描 1.         添加一个新扫描      2.         默认下一步     ...

  2. Book 动态规划

    虽然之前学过一点点,但是还是不会------现在好好跟着白书1.4节学一下—————— (1)数字三角形 d(i,j) = max(d(i+1,j),d(i+1,j+1)) + a[i][j] hdu ...

  3. Codeforces Round #499 (Div. 2) C.FLY 数学推导_逆推

    本题应该是可以使用实数二分的,不过笔者一直未调出来,而且发现了一种更为优美的解法,那就是逆推. 首先,不难猜到在最优解中当飞船回到 111 号节点时油量一定为 000, 这就意味着减少的油量等于减少之 ...

  4. node——将用户提交的数据写入data.json文件

    前续 当我们在进行将数据提交到某个网页时,需要将提交数据保存下来 1.提交数据 2.获得数据 3.保存数据 先看提交数据: <!DOCTYPE html> <html lang=&q ...

  5. 从0实现一个React,个人总结

    原文: https://github.com/hujiulong/blog/issues/4 个人总结:: 一.JSX和虚拟DOM import React from 'react'; import ...

  6. [置顶] 献给写作者的 Markdown 新手指南

    作者:http://jianshu.io/p/q81RER 出处:http://jianshu.io/p/q81RER 献给写作者的 Markdown 新手指南 简书 「简书」作为一款「写作软件」在诞 ...

  7. jquery @keyframes 动态添加

    需要写一个css3的动画效果,且需要按着写的事件同事进行需控制样式 css代码 @keyframes spin1 { 0% { transform: rotate(225deg); } 50% { t ...

  8. 如何使用JAVA请求HTTPS

    JDK对应的TLS版本(仅供参考) 1.写一个SSLClient类,继承至HttpClient import java.security.cert.CertificateException; impo ...

  9. 前端的标配:npm是什么及其安装(含cnpm)

    前端的标配:npm是什么及其安装 一:npm是什么及其来源 参考来源:npm是干什么的 总结:不需要去相关的网站下载依赖,用一个工具把这些依赖集中起来管理 NPM 的思路大概是这样的: 1)买个服务器 ...

  10. Maven系列--web.xml 配置详解

    一 .web.xml介绍 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 紧接着,容 ...