React 学习笔记

React 笔记

一、JSX 语法 疑难点
class => className
for => htmlFor
组件 大写开头
js表达式 {} 子组件可以作为表达式
注释 {/注释/} or <Nav /注释/ >
自定义属性 data-
<Component {...props} />
style 属性: { CSS 属性构成的 JS 对象}
onChange 事件: 不需要 onBlur 去触发
表单的表现差异大
dangerouslySetInnerHTML 传入一个对象:{ __html: 相当于元素的 innerHTML}

style 接受一个对象,这个对象里面是这个元素的 CSS 属性键值对
<h1 style={{fontSize: '12px', color: 'red'}}>React.js 小书</h1>

二、组件
基本概念:
props 组件属性
state 组件可看成一个“状态机”,state组件当前状态,通过this.setState()方法更新设置state,将调用render重新渲染UI
划分状态数据(什么数据属性可以当做状态:)
无状态组件

this.setState({}) 不会马上更新,将参数{}放入一个更新队列,
this.setState(fn) 异步回调写法,参数为一个函数
一个事件循环只会渲染一次,一个事件循环中多个setState会合并后再渲染

配置组建 props

默认配置 defaultProps
static defaultProps = {
likedText: '取消',
unlikedText: '点赞'
}

总结

  1. 为了使得组件的可定制性更强,在使用组件的时候,可以在标签上加属性来传入配置参数。

  2. 组件可以在内部通过 this.props 获取到配置参数,组件可以根据 props 的不同来确定自己的显示形态,达到可配置的效果。

  3. 可以通过给组件添加类属性 defaultProps 来配置默认参数。

  4. props 一旦传入,你就不可以在组件内部对它进行修改。但是你可以通过父组件主动重新渲染的方式来传入新的 props,从而达到更新的效果

  5. 受控组件的概念,React.js 中的 <input /> 、<textarea />、<select /> 等元素的 value 值如果是受到 React.js 的控制,那么就是受控组件。

  6. 组件之间使用 props 通过父元素传递数据的技巧

将组件渲染,并且构造 DOM 元素然后塞入页面的过程称为组件的挂载
(这个定义请好好记住)。其实 React.js 内部对待每个组件都有这么一个过程,也就是初始化组件 -> 挂载到页面上的过程。所以你可以理解一个组件的方法调用是这么一个过程:

-> constructor()
-> render()
// 然后构造 DOM 元素插入页面

这当然是很好理解的。React.js 为了让我们能够更好的掌控组件的挂载过程,往上面插入了两个方法:

-> constructor()
-> componentWillMount()
-> render()
// 然后构造 DOM 元素插入页面
-> componentDidMount()

一个组件可以插入页面,当然也可以从页面中删除。

-> constructor()
-> componentWillMount()
-> render()
// 然后构造 DOM 元素插入页面
-> componentDidMount()
// ...
// 从页面中删除

React.js 也控制了这个组件的删除过程。在组件删除之前 React.js 会调用组件定义的 componentWillUnmount:

-> constructor()
-> componentWillMount()
-> render()
// 然后构造 DOM 元素插入页面
-> componentDidMount()
// ...
// 即将从页面中删除
-> componentWillUnmount()
// 从页面中删除

state vs props
一个组件的 state 中的数据可以通过 props 传给子组件,一个组件可以使用外部传入的 props 来初始化自己的 state
state 是让组件控制自己的状态,props 是让外部对组件自己进行配置。

生命周期:
有7个方法根据执行时机,可分为3类:(组件挂载、组件更新、组件移除)
执行时机:
Mount:已插入真实 DOM;Update:正在被重新渲染;Unmount:已移出真实 DOM
两种类型处理函数:
will 函数在进入状态之前调用,did 函数在进入状态之后调用
两个特殊状态处理函数
componentWillReceiveProps(object nextProps):已加载组件收到新的参数时调用
shouldComponentUpdate(object nextProps, object nextState):组件判断是否重新渲染时调用

组件挂载:
componentWillMount 渲染前调用一次,这个时候DOM结构还没有渲染
componentDidMount 渲染完成后调用一次,这个时候DOM结构已经渲染了
组件更新:
*componentWillReceiveProps 初始化渲染不会调用,在接收到新的props时,会调用这个方法
*shouldComponentUpdate 初始化渲染不会调用,接收到新的props或state时调用
componentWillUpdate 初始化渲染不会调用,更新前调用
componentDidUpdate 初始化渲染不会调用,更新后调用
组件卸载:
componentWillUnmount 组件移除前调用(例如清除内存,解除事件的监听)

通俗讲,React 将组件在web中的形成、修改和渲染等划分为若干个阶段,组成组件的生命周期。在一个完整的生命周期内,一个组件会经过若干个阶段,在特殊的阶段组件会调用一个特别的生命周期方法。如下:

  1. constructor(props)
  2. componentWillMount()
  3. render()
  4. componentDidMount()
  5. componentWillReceiveProps(nextProps)
  6. shouldComponentUpdate(nextProps, nextState)
  7. componentWillUpdate(nextProps, nextState)
  8. render( )
  9. componentDidUpdate(prevProps, prevState )
  10. componentWillUnmount( )

事件
DOM操作
组合组件
组件通信
Mixing

三、表单
四、动画
五、测试、调试

六、数据源

七、服务端渲染

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容

  • 3. JSX JSX是对JavaScript语言的一个扩展语法, 用于生产React“元素”,建议在描述UI的时候...
    pixels阅读 2,824评论 0 24
  • 安装: 概述 React起源于FaceBook的内部项目,因为该公司对市场上所有的JavaScript MVC框架...
    姒沝無痕阅读 719评论 0 0
  • 摘要 React中的组件类似于状态机,每个组件都被设计成为在其生命周期过程中输出稳定、语义化的标签。React组件...
    桂圆_noble阅读 2,531评论 2 11
  • 写在前面 React入门学习笔记。 教程可参考:React 教程 | 菜鸟教程阮一峰的网络日志 > React 入...
    年少有van阅读 389评论 1 1
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,835评论 1 18