1.react内联样式写法

  1. <div style={{width:'200px',height:'100px',border:'1px solid red'}}>
  2. </div>

react的内联样式是对象,所以这样写。第一重大括号表示这是 JavaScript 语法,第二重大括号表示样式对象。

2.react的事件写法

  1. onClick={this.handleClick}

注意:1)on后面的事件英文必须是大写;

2)事件用大括号{}括起来,事件函数后面不带小括号()。

3.refs的属性可以帮助我们突破虚拟DOM的限制,可以获取到DOM结构。

使用react-dom提供的专门操作DOM的方法:

  1. ReactDOM.findDOMNode(this.refs.XXX)

4.设置state必须用setState

  1. this.setState({})

5.react要求array或iterator必须要有key。

Each child in an array or iterator should have a unique "key" prop.

循环array或itrator,写法:

  1. var arr = ["aaa","bbb","ccc"];
  2. var arrList = arr.map(function (value,index) {
  3. return (
  4. <li key={index}>{value}</li>
  5. );
  6. });

6.getInitialState:对于组件的每个实例来说,这个方法的调用有且只有一次,用来初始化每个实例的 state,在这个方法里,可以访问组件的 props。

getDefaultProps:对于每个组件实例来讲,这个方法只会调用一次,该组件类的所有后续应用,getDefaultPops 将不会再被调用。

每一个React组件都有自己的 state,其与 props 的区别在于 state只存在组件的内部props 在所有实例中共享

7.下面2种方式都可以通过ref获取真实DOM节点

  1. var usernameDOM = ReactDOM.findDOMNode(this.refs.username);
  2. var usernameDOM = ReactDOM.findDOMNode(this.refs['username']);

getDOMNode()方法:在react 0.13和0.14中提示一个错误,在15.0中完全移除(react 0.15版本命名为15.0了)。

8.React组件的生命周期图示:

9.组件之间传值:

1). props只能进行数据传递不能修改,并且只能通过父组件传给子组件;例子(父组件传props给子组件):http://runjs.cn/detail/kzki5vgm

2). state(状态)用来保存交互的状态,每个组件自带state属性。不能在组件之间传递数据

3). 组件之间传值可以找到这些组件之间共有的父组件,把state属性设置在父组件上。

10.父组件发生render的时候子组件就会调用componentWillReceiveProps(不管props有没有更新,也不管父子组件之间有没有数据交换)。

11.如果父组件中包含子组件,则父组件的componentDidMount方法会在子组件执行完实例化周期后再执行。

12.组件生命周期图示:

13.组件使用:

在组件的挂载过程中,会依次调用 componentWillMount()、render() 和 componentDidMount()。挂载完成后,componentWillMount() 和 componentDidMount() 将不会再被触发render() 则会根据 props 和 state 的变化多次执行

在 componentDidMount() 调用之前,只能得到由 render() 返回的虚拟 DOM;在该方法执行时,真实 DOM 的渲染已经完成,此时,可以通过 ReactDOM 内建的 ReactDOM.findDOMNode() 访问真实的 DOM

挂载结束后,组件处于监听状态,监听 props 和 state 的变化。props 和 state 的差异在于:state 用于配置组件内的状态,props 则用于在组件间传递数据

在实际开发中,这一阶段调用的核心都是围绕 state 展开的。state changed 之后,系统会立即调用 boolean shouldComponentUpdate(object nextProps, object nextState) 方法来决定是否重新渲染页面。当遭遇性能瓶颈时,适当地通过该方法控制页面渲染的频率是为提升性能不二法门

当 props changed 时,系统会立即调用 componentWillReciveProps(object nextProps) 方法。该方法常被用来执行 props -> state 的更新,继而触发整个页面的渲染。

在这一阶段重新渲染页面所需要的同样是 will -> render -> did 三个方法。不同之处在于,此处的 will 和 did 附加了 props 和 state 信息:

  1. componentWillUpdate(object nextProps, object nextState) {
  2. ...
  3. }
  4. componentDidUpdate(object prevProps, object prevState) {
  5. ...
  6. }

14.boolean componentWillUpdate(object nextProps, object nextState)

PureRenderMixin,ES6中的用法是:

  1. import PureRenderMixin from 'react-addons-pure-render-mixin';
  2. class FooComponent extends React.Component {
  3. constructor(props) {
  4. super(props);
  5. this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);
  6. }
  7.  
  8. render() {
  9. return <div className={this.props.className}>foo</div>;
  10. }
  11. }
PureRenderMixin的原理就是它实现了shouldComponentUpdate,在shouldComponentUpdate内它比较当前的props、state和接下来的props、state,当两者相等的时候返回false,这样组件就不会进行虚拟DOM的diff。 
这里需要注意:
PureRenderMixin内进行的仅仅是浅比较对象。如果对象包含了复杂的数据结构,深层次的差异可能会产生误判。仅用于拥有简单props和state的组件。
如果对比的数据结构比较复杂,用immutable.js,也是facebook出品,它能解决复杂数据在deepClone和对比过程中性能损耗。
15.componentWillReceiveProps
在组件接收到新的 props 的时候调用。
用此函数可以作为 react 在 prop 传入之后, render() 渲染之前更新 state 的机会。老的 props 可以通过 this.props 获取到。在该函数中调用 this.setState() 将不会引起第二次渲染。
  1. componentWillReceiveProps: function(nextProps) {
  2. this.setState({
  3. likesIncreasing: nextProps.likeCount > this.props.likeCount
  4. });
  5. }

react 知识点的更多相关文章

  1. React知识点总结1

    最近打算把react知识点总结下: React特点 1.虚拟DOM 在内存中操作DOM,在内存中创建数据结构,只会更新有差异的地方 2.组件化 页面分成若干个组件,每个组件包含逻辑结构和样式 组件仅包 ...

  2. react知识点汇总

    ①uncontrolComponent & controlComponent If your form is incredibly simple in terms of UI feedback ...

  3. react 知识点2

    从 render 函数可以看出来,组件内部是通过 this.props 的方式获取到组件的参数的,如果 this.props 里面有需要的属性我们就采用相应的属性,没有的话就用默认的属性. 那么怎么把 ...

  4. react知识点

    http://www.cocoachina.com/webapp/20150721/12692.html http://blog.csdn.net/slandove/article/details/5 ...

  5. react知识点总结(持续更新。。。)

    一.webpack 1. 什么是以及为什么要使用webpack 现在的网页功能越来越丰富,所需要的JavaScript和模块也会很多,为开发更加简洁,出现了以下方法,如模块化,scss,typescr ...

  6. React知识点整理

    面试题:三大框架中数据绑定实现上有何绑定? 一.概述:是Facebook维护的一个构建用户界面的JS库,核心很精简,但是生态圈扩展很大. React:MVVM框架 React-Router:路由 Re ...

  7. 4-13 Webpacker-React.js; 用React做一个下拉表格的功能: <详解>

    Rails5.1增加了Webpacker: Webpacker essentially is the decisions made by the Rails team and bundled up i ...

  8. React实战一

    目录 1. 搭建环境 2. React知识点 1. 组件 1.1 定义一个组件 1.2 组合与拆分组件 1.3 组件传值 1.4 state 1.5 生命周期函数 1.6 无状态组件 1.7 List ...

  9. React 解析/ 第二节 使用 Reac

    官方脚手架 create-react-app React 提供了一个官方的命令行工具(CLI)—— create-react-app,是专门用于快速搭建单页面应用(SPA)的脚手架,它基于 Webpa ...

随机推荐

  1. hdu-3980-nim博弈/sg函数

    Paint Chain Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. gvim配置文件

      vimrc配置 source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin "设置文件的 ...

  3. 微信小程序 -- 数据请求

    微信小程序 -- 数据请求 微信小程序请求数据,并不是一个可以在url打开有数据就可以拿到数据那么简单 浏览器地址输入 可以获取参数的url 微信小程序中 代码展示 wxml <view> ...

  4. c++ 发送消息,模拟拖拽文件

    #include <ShlObj.h> BOOL SimulateDropFile(CString strFilePath) { }; wcstombs(szFile, strFilePa ...

  5. WEB-ERROR-PAGE

    首先需要在Web.xml文件中配置如下标签:     <error-page>        <error-code>404 </error-code>       ...

  6. RK3288 GMAC整理

    一.源文件 源码路径:\drivers\net\ethernet\rockchip\gmac 源码阅读顺序: 二.重要探针函数stmmac_dvr_probe 1. alloc_etherdev 申请 ...

  7. storage路径问题

    1 概念总述 android开发中,关于存储路径,我们经常听到以下几个概念:内存.内部存储和外部存储,现在我们就来详细说说这三者区别与联系. 内存:英文中记为memory,即RAM 内部存储:英文记为 ...

  8. SqlServer中的merge操作(转载)

    SqlServer中的merge操作(转载)   今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有 ...

  9. C++内置类型的机器实现

    大多数计算机以2的整数次幂个比特作为块来处理内存,可寻址的最小内存块称为“字节(byte)”,存储的基本单元称为“字(word)”,它通常有几个字节组成. 计算机以比特序列存储数据,即01000101 ...

  10. L1-051 打折

    去商场淘打折商品时,计算打折以后的价钱是件颇费脑子的事情.例如原价 ¥988,标明打 7 折,则折扣价应该是 ¥988 x 70% = ¥691.60.本题就请你写个程序替客户计算折扣价. 输入格式: ...