React 入门介绍

react 是什么?

React是Facebook开源的一个用于构建用户界面的Javascript库,React专注于MVC架构中的View层,即视图层。
应用React时,应从UI出发抽象出不同的组件,对组件进行拼装。react 适合构建大规模应用程序,通过 React 你唯一要做的事情就是构建组件。
React有良好的封装性,组件使代码复用、测试和关注分离(separation of concerns)更加简单。

react 中的 Virtual DOM(虚拟DOM)

因为过多DOM操作会让应用程序变得很慢,并且很笨拙,在React中抽象出来了虚拟dom,在每次需要渲染时,会先比较当前DOM内容和待渲染内容的差异,
然后再决定如何最优地更新DOM。这个过程被称为reconciliation。

如何理解虚拟DOM

在浏览器端用Javascript实现了一套DOM API。基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,每当数据变化时,React都会重新构建整个DOM树,
然后React将当前 整个DOM树和上一次的DOM树进行对比,得到DOM结构的区别,然后仅仅将需要变化的部分进行实际的浏览器DOM更新。
而且React能够批处理虚拟 DOM的刷新,在一个事件循环(Event Loop)内的两次数据变化会被合并,例如你连续的先将节点内容从A变成B,然后又从B变成A,
React会认为UI不发生任何变化,而如果通过手动控 制,这种逻辑通常是极其复杂的。尽管每一次都需要构造完整的虚拟DOM树,但是因为虚拟DOM是内存数据,性能是极高的,
而对实际DOM进行操作的仅仅是 Diff部分,因而能达到提高性能的目的。这样,在保证性能的同时,开发者将不再需要关注某个数据的变化如何更新到一个或多个具体的DOM元素,
而只需要 关心在任意一个数据状态下,整个界面是如何Render的。

React组件化

对于React而言,开发者从功能的角度出发,将UI分成不同的组件,每个组件都独立封装。
在React中,你按照界面模块自然划分的方式来组织和编写你的代码,对于评论界面而言,
整个UI是一个通过小组件构成的大组件,每个组件只关心自己部分的逻辑,彼此独立。

React中定义组件的方式

① ReactDOM.render
ReactDOM.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。


ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('elementId')
);

② ES5方式定义组件

"use strict";

var HelloMessage = React.createClass({
  displayName: "HelloMessage",

  render: function render() {
    return React.createElement(
      "div",
      null,
      "Hello ",
      this.props.name
    );
  }
});

ReactDOM.render(React.createElement(HelloMessage, { name: "John" }), mountNode);

③ 在Jsx中定义组件

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

ReactDOM.render(<HelloMessage name="John" />, mountNode);

④ ES6中定义组件

import './Hello.css';
import './Hello.scss';

import React, {Component} from 'react';

// 内联样式
let style={
    backgroundColor:'blue'
}

export default class Hello extends Component {
    constructor(props) {
        super(props);
        this.state = { count: 'es6'};
    }
    render() {
        return (
            <div>
                <h1 style={style}>Hello world{this.state.count}</h1>
                <br/>
                <image/>
            </div>
        )
    }
}

jsx语法 介绍

HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写。
实质上这只是一个语法糖,每一个 XML标签都会被JSX转换工具转换成纯Javascript代码,当然你想直接使用纯Javascript代码写也是可以的,
只是利用JSX,组件的结 构和组件之间的关系看上去更加清晰。

JSX 的基本语法规则:
遇到 HTML 标签(以 < 开头),就用 HTML 规则解析;遇到代码块(以 { 开头),就用 JavaScript 规则解析。
JSX 允许直接在模板插入 JavaScript 变量。如果这个变量是一个数组,则会展开这个数组的所有成员。
如:


 var arr = [
   <h1>Hello world!</h1>,
   <h2>React is awesome</h2>,
 ];

 ReactDOM.render(
   <div>{arr}</div>,
   document.getElementById('example')
 );

相关学习地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值