初级React入门

一、引入Reactjs

方法一:直接下载相关js文件引入网页,其中react.js 是 React 的核心库,react-dom.js 是提供与 DOM 相关的功能,Browser.js 的作用是将 JSX 语法转为 JavaScript 语法,这一步很消耗时间,实际上线的时候,应该将它放到服务器完成。

<script src="../build/react.js"></script>
<script src="../build/react-dom.js"></script>
<script src="../build/browser.min.js"></script>

方法二:通过前端架构工具,比如 browserify 或 webpack。使用 react和 react-dom npm 包.

var React = require('react');
var ReactDOM = require('react-dom');

二、基本原理

1、创建组件

var Component=React.createClass({
  render:function(){
    return (
      <div className="box">
        <h2>我是一个标题</h2>
        <contentInfo />//子组件     
      </div>    
    )    
  } 
})   

2、渲染组件(组件名称,要插入的节点)

ReactDOM.render(<Component />, document.getElementById('app'));

3、组件的状态,状态改变组件将重新渲染

getInitialState: function() {
  return {liked: false};
}

4、组件的数据交互

用this.props获取组件传递过来的数据

var HelloMessage = React.createClass({
  render: function() {
    return <h1>Hello {this.props.name}</h1>;
  }
});

ReactDOM.render(
  <HelloMessage name="John" />,
  document.getElementById('example')
);

设置ref值,方便后续使用React.findDOMNode方法获取虚拟dom

var MyComponent = React.createClass({
  handleClick: function() {
    var TextInput=React.findDOMNode(this.refs.myTextInput);
    TextInput.value="clicked";
  },
  render: function() {
    return (
      <div>
        <input type="text" ref="myTextInput" />
        <input type="button" value="Focus the text input" onClick={this.handleClick} />
      </div>
    );
  }
});

ReactDOM.render(<MyComponent />,document.getElementById('example'));

  5、组件的生命周期(初始化、运行中、销毁) 

//初始化阶段函数介绍
getDefaultProps();//只调用一次,实例之前共享引用
getInitialState();//初始化每个实例特有的状态
componentWillMount();//render之前最后一次修改状态的机会
render();//只能访问this.props和this.state,只有一个顶层组件,不允许修改状态和DOM输出
componentDidMount();//成功render并渲染完成真实DOM后触发,可修改DOM
//运行中阶段函数介绍
componentWillReceiveProps();//父组件修改属性触发,可以修改新属性和状态
shouldComponentUpdate();//返回false会阻止render(提升性能)
componentWillUpdate();//不能修改属性和状态
render();//同初始化函数render
componentDidUpdate();//同初始化函数componentDidMount
//销毁阶段函数介绍
componentWillUnmount();//在删除组件前进行清理操作,比如计时器和事件监听器

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java 技术分享

WEB 小案例 -- 网上书城(二)

2637
来自专栏前端儿

React 基础实例教程

首先,需要核心库react.js与React的DOM操作组件react-dom.js

632
来自专栏小怪聊职场

爬虫课堂(二十)|编写Spider之使用Item Pipeline处理数据

2535
来自专栏企鹅号快讯

WebDriver自动化项目设计模式快速入门-自动化测试系列笔记

朵拉小序:Page Object,即”页面对象“,就是将单个页面作为一个对象来处理。 以面向对象的方式来处理页面和业务流程的好处在于,如果某个页面元素的属性有了...

1735
来自专栏有趣的Python

Scrapy分布式爬虫打造搜索引擎 -(二)伯乐在线爬取所有文章Python分布式爬虫打造搜索引擎

Python分布式爬虫打造搜索引擎 基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站 二、伯乐在线爬取所有文章 ...

3455
来自专栏大壮

对BarrageRenderer的理解分享(理论篇)

1224
来自专栏崔庆才的专栏

Scrapy 对接 Selenium

本节我们来看一下 Scrapy 框架中如何对接 Selenium,这次我们依然是抓取淘宝商品信息,抓取逻辑和前文中用 Selenium 抓取淘宝商品一节完全相同...

1.5K1
来自专栏崔庆才的专栏

Scrapy框架的使用之Scrapy对接Selenium

1954
来自专栏扎心了老铁

一个scrapy框架的爬虫(爬取京东图书)

我们的这个爬虫设计来爬取京东图书(jd.com)。 scrapy框架相信大家比较了解了。里面有很多复杂的机制,超出本文的范围。 1、爬虫spider tips:...

3296
来自专栏Python中文社区

Scrapy基础——CrawlSpider详解

專 欄 ❈hotpot,Python中文社区专栏作者 博客: http://www.jianshu.com/u/9ea40b5f607a ❈ CrawlSpi...

3008

扫描关注云+社区