1. HTML模板

  Jsx是react的语法糖,最终会被编译成js语法。因此需要第三方库browser将jsx转换成js。

  由于react 0.14版本之后,将react和react-dom拆分,所以需要分别引入react和react-dom

  这是官网的一个demo

 <!DOCTYPE html>
 <html>
   <head>
     <script src="../build/react.js"></script>
     <script src="../build/react-dom.js"></script>
     <script src="../build/browser.min.js"></script>
   </head>
   <body>
     <div id="example"></div>
     <script type="text/babel">
       ReactDOM.render(
         <h1 color>Hello, world!</h1>,
         document.getElementById('example')
       );
     </script>
   </body>
 </html>

  但是编译之后是这样的:

React.render( React.createElement("h1", {color: "red"}, "Hello, world!"), document.getElementById('example') );  

  render()方法里面的html代码被转换成了React.createElement.因此阔以使用React.createElement来创建模板,但不推荐。

  React.createEleemt(type,[props],[...children]):

    type:the type argument can be either a tag name string(such as "div"),or a React Compoment()

  jsx语法规则:render方法第一个参数,首写字母如果是小写的就是HTML代码,如果是大写字母就是React组件;

        jsx会主动去检查标签是否闭合,如果没有闭合,直接报错。

2.ReactDOM.render()+js

  只需要用大括号括起来就可以使用js语法。

 var names = ['Alice', 'Emily', 'Kate'];

       ReactDOM.render(
         <div>
         {
           names.map(function (name) {
             return <div>Hello, {name}!</div>
           })
         }
         </div>,
         document.getElementById('example')
       );

  编译之后变成:

 var names = ['Alice', 'Emily', 'Kate'];
 React.render(
   React.createElement("div", null, names.map(function (name) {
     return React.createElement("div", null, "Hello, ", name, "!")
   }) ),
  document.getElementById('example')
 );  

还是三个参数,第二个arg为null,第三个参数就是js代码。所以js代码只能放一行表达式,不能有;出现。

比如这样写就是错误的:

 React.render(
 <div>
 {
 var a = 1;
 names.map(function (name) {
 return <div>Hello, {name}!</div>
 })
 }
 </div>,
 document.getElementById('example')
 ); 

3.render 数组

  arr是个数组,jsx会把arr的所有成员都添加到模板中。只需要用{}把arr括起来,表示js代码即可。

var arr = [
  <h1>Hello world!</h1>,
  <h2>React is awesome</h2>,
];
ReactDOM.render(
  <div>{arr}</div>,
  document.getElementById('example')
);

编译后结果:

 React.render(
          React.createElement("div", null, [<h1>Hello world!</h1>,<h2>React is awesome</h2>,]),
         document.getElementById('example')
        );

react学习笔记-01的更多相关文章

  1. react学习笔记01

    被项目拖了半年的我终于有时间学习react 了 下面是我最近学习的笔记 支持jsx语法 ReactDOM.render( <div> <h1>hello, word</h ...

  2. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  3. react学习笔记1--基础知识

    什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快, ...

  4. React学习笔记--程序调试

    React学习笔记 二 程序调试   前面我们搭建好了React的基本开发环境,可以编写基本的React js程序了.但完成的开发环境肯定包含调试器,怎么调试用React编写的JS程序呢?有浏览器,比 ...

  5. React学习笔记(一)- 入门笔记

    React入门指南 作者:狐狸家的鱼 本文链接:React学习笔记 GitHub:sueRimn 1.组件内部状态state的修改 修改组件的每个状态,组件的render()方法都会再次运行.这样就可 ...

  6. React学习笔记(七)条件渲染

    React学习笔记(七) 六.条件渲染 使用if或条件运算符来创建表示当前状态的元素. 可以使用变量来存储元素.比如: let button = null; if (isLoggedIn) { but ...

  7. React学习笔记(六)事件处理

    React学习笔记(六) 五.事件处理 React事件绑定属性的命名采用驼峰写法,不同于传统DOM全部小写. 如果采用JSX的语法,事件函数需要用大括号{}包裹函数名,不同于传统DOM字符串小括号的方 ...

  8. React学习笔记(五)State&声明周期

    React学习笔记(五) 四.State&声明周期 可以为组件添加"状态(state)".状态与属性相似,但是状态是私有的,完全受控于当前组件. 局部状态就是只能用于类(定 ...

  9. React学习笔记 - 组件&Props

    React Learn Note 4 React学习笔记(四) 标签(空格分隔): React JavaScript 三.组件&Props 组件可以将UI切分成一些独立的.可复用的部件,这样你 ...

随机推荐

  1. Java-继承的应用

    class array {  private int[] temp;  private int foot;  public array(int len)   //为temp数组规定大小,并开辟空间,申 ...

  2. Bitmap的一个简单实现

    一.Bitmap简介 Bitmap是一种常用的数据结构,其实就是一个连续的数组,主要是用于映射关系,如映射整数,一位代表一个数,即这里假设Bitmap有100Bytes * 8 这么多的位,那么这里可 ...

  3. dubbo学习笔记

    一.zookeeper在Dubbo中扮演角色 流程:1.服务提供者启动时向/dubbo/com.foo.BarService/providers目录下写入URL2.服务消费者启动时订阅/dubbo/c ...

  4. 【Java每日一题】20170112

    20170111问题解析请点击今日问题下方的"[Java每日一题]20170112"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  5. shell编程其实真的很简单(二)

    上篇我们学会了如何使用及定义变量.按照尿性,一般接下来就该学基本数据类型的运算了. 没错,本篇就仍是这么俗套的来讲讲这无聊但又必学的基本数据类型的运算了. 基本数据类型运算 操作符 符号 语义 描述 ...

  6. Robot Framework使用技巧

    1.变量的使用 变量可以在命令行中设置,个别变量设置使用--variable (-v)选项,变量文件的选择使用--variablefile (-V)选项.通过命令行设置的变量是全局变量,对其所有执行的 ...

  7. sublime3下载安装及常用插件

    之前与学习前端有关的软件都安装在了实验室电脑上,最近由于要放寒假(也许我寒假回去会学习呢),于是得在笔记本电脑上重新安装一遍.几个软件各种出错,花了一下午才安装好,必须记录下来啊! 这篇文章主要介绍s ...

  8. JS判断在哪个浏览器打开

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  9. php的redis函数

    phpredis中文手册--<redis中文手册> php版   redis中文手册:http://readthedocs.org/docs/redis/en/latest/ 本文是参考& ...

  10. CODE[VS]-保留两位小数-浮点数处理-天梯青铜

    题目描述 Description 保留两位小数输出一个浮点数. 输入描述 Input Description 一个浮点数.double范围内 输出描述 Output Description 保留两位小 ...