react学习笔记-01

1. HTML模板

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

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

  这是官网的一个demo

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <script src="../build/react.js"></script>
 5     <script src="../build/react-dom.js"></script>
 6     <script src="../build/browser.min.js"></script>
 7   </head>
 8   <body>
 9     <div id="example"></div>
10     <script type="text/babel">
11       ReactDOM.render(
12         <h1 color>Hello, world!</h1>,
13         document.getElementById(‘example‘)
14       );
15     </script>
16   </body>
17 </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语法。

 1 var names = [‘Alice‘, ‘Emily‘, ‘Kate‘];
 2
 3       ReactDOM.render(
 4         <div>
 5         {
 6           names.map(function (name) {
 7             return <div>Hello, {name}!</div>
 8           })
 9         }
10         </div>,
11         document.getElementById(‘example‘)
12       );

  编译之后变成:

1 var names = [‘Alice‘, ‘Emily‘, ‘Kate‘];
2 React.render(
3   React.createElement("div", null, names.map(function (name) {
4     return React.createElement("div", null, "Hello, ", name, "!")
5   }) ),
6  document.getElementById(‘example‘)
7 );  

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

比如这样写就是错误的:

 1 React.render(
 2 <div>
 3 {
 4 var a = 1;
 5 names.map(function (name) {
 6 return <div>Hello, {name}!</div>
 7 })
 8 }
 9 </div>,
10 document.getElementById(‘example‘)
11 ); 

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‘)
);

编译后结果:

1 React.render(
2          React.createElement("div", null, [<h1>Hello world!</h1>,<h2>React is awesome</h2>,]),
3         document.getElementById(‘example‘)
4        );
时间: 2024-10-26 17:52:20

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

【opengl 学习笔记01】HelloWorld示例

<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比较踏实,哈哈. 我的主题是,好记性不如烂笔头. ================================================================ 1. 下载glut库 glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utilit

HTTP 学习笔记01

HTTP   hypertext transfer protocol (超文本传输协议) TCP/IP 协议集中的一个应用层协议 用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式 HTTP 1.0  会话方式 HTTP 1.1 方式 HTTP 请求消息结构 一个请求行,若干消息头,以及实体内容 其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开. GET   方式下是没有实体内容的 POST .PUT.DELETE 方式下请求消息才可以包含实体内容 HT

SWIFT学习笔记01

1.Swift,用来判断option是不是nil,相当于OC的 if(option) if let name = option{ greeting = "if=====" }else{ greeting = "else===" } 2.运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break. 3.//使用..创建的范围不包含上界,如果想包含的话需要使用...,集合上,就是[)与[]的关系 for i

C++ GUI Qt4学习笔记01

C++ GUI Qt4学习笔记01 qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概念:一个是“信号和槽”,另一个是“布局”. 窗口部件(widget)是用户界面的一个可视化元素,相当于windows系统中的“控件”和“容器”.任意窗口部件都可以用作窗口. 1.1Hello Qt 正确安装Qt4开发环境,创建工程目录hello,源代码文件名为hello.cpp,进入hello目录 (1

HTML学习笔记01

HTML学习笔记 HTML学习笔记01 一.HTML的定义 1 HTML就是"HyperText Markup Language","超文本标记语言".2 HTML不是<color="red">编程语言,而是一种标记语言.3 标记语言是一套标记标签.4 HTML使用标记标签来描述网页. 二.HTML标签 1 HTML标签是由尖括号包围的关键词.2 HTML标签通常是成对出现的.3 标签对中的第一个标签是开始标签,第二个标签是结束标签.

MVC4 学习笔记01

1 . ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别是什么?要注意什么吗? ActionResult 是一个抽象(abstract)类,ViewResult 只是ActionResult 的一个实现(implementation).如果你确认你返回的是一个视图(view),你可以直接返回类型为ViewResult.ActionResult 有很多的派生类,如果你很确定你要返回的类型,你可以明确的返回该类型.如果你并不是很清楚,或者你根本不想去理解

python学习笔记(01):python和c语言 标识符命名规则比较

python标识符命名规则:标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘ _ ’).标识符名称的其他部分可以由字母(大写或小写).下划线(‘ _ ’)或数字(0-9)组成.标识符名称是对大小写敏感的.例如,myname和myName不是一个标识符.注意前者中的小写n和后者中的大写N.有效 标识符名称的例子有i.__my_name.name_23和a1b2_c3.无效 标识符名称的例子有2things.this is spaced out和my-name. c语言标识符命

C++学习笔记——01

最近准备跳槽的事情,于是把C++翻出来看,顺便做了一些练习,主要是数据结构方面的,就贴在这里做个系列,权当督促自己了. 第一天,写了一个栈,调试了下没什么问题,内存泄露的问题也解决了. 1 #ifndef STACK_H 2 #define STACK_H 3 4 #include "stdlib.h" 5 #include "iostream" 6 7 class Stack 8 { 9 private: 10 typedef int NODE_DATA_TYPE

DirectX10学习笔记&lt;01&gt; 搭建环境-在Visual Studio中配置DirectX

一.工具下载 IDE:Visual Studio 2008 SDK:DirectX SDK,可以从Microsoft的网站上免费下载到.SDK中还包含示例.工具和文档.自带的工具很有用,我们会经常使用其中的DDS纹理工具. 二.设置Visual Studio 2008 菜单栏->Tools->Options... 左边选择Projects and Solutions->VC++ Directories 右边Show directiories for:选择Include files,往下列