JSX语法
来源:互联网 发布:js调试遇到错误中断 编辑:程序博客网 时间:2024/05/17 01:41
提到JSX,我们肯定想知道什么是JSX,有什么特点?
JSX就是javascript和XML结合的一种格式,React发明了JSX,利用HTML语法来创建虚拟DOM, 当遇到<,JSX就当做html解析,遇到{,就当做javascript解析。
JSX的优点
- JSX执行更快,因为它在编译javascript后进行了优化。
- 类型是安全的的
- 使用JSX编写模板更加简单快速。
使用JSX
JSX看起来类似于HTML
ReactDOM.render( <h1></h1>, document.getElementById("root"))
我们可以在以上代码中嵌套多个HTML,需要使用一个div包裹它
render( <div> <h1>好好努力</h1> <p>爱恨情仇</p> <h2>风华雪月</h2> </div>, document.getElementById("root"));
实例中的p元素添加了自定义属性,data-time,添加自定义属性需要data-属性
render( <div> <h1>好好努力</h1> <p data-time="DATA">爱恨情仇</p> <h2>风华雪月</h2> </div>, document.getElementById("root"));
独立文件
JSX文件可以放在一个独立文件上,比如idex.js
代码如下
//index.jsimport "../css/reset.css";import "../css/common.css";import React,{ Component } from "react";import { render } from "react-dom";render( <div> <h1>好好努力</h1> <p data-time="like">爱恨情仇</p> <h2>风华雪月</h2> </div>, document.getElementById("root"));
import React,{ Component } from "react";import { render } from "react-dom";
上面这两行是在webpack中的写法,不懂的,可以去学习一下webpack
这里就不做介绍了。
JavaScript表达式
我们可以在JSX中使用表达式,必须放在{}中,实例如下
var arr = 1;render( <div> <h1>{arr}</h1> </div>, document.getElementById("root"));
结果如下:
1
var arr = [1,3,4,5];render( <div> <h1>{arr}</h1> </div>, document.getElementById("root"));
结果如下
1345
如果arr不用大括号{}包裹起来的话,那就只能输出arr了,而不是数组的内容
var arr = [1,3,4,5];render( <div> <h1>arr</h1> </div>, document.getElementById("root"));
结果如下:
arr
在JSX中不能使用if,else语句,但可以使用(三目运算)表达式来代替,
在下面代码中如果i为1的话,浏览器就会输出true
var i = 1;render( <div> <h1>{ i=1 ? 'true':'false' }</h1> </div>, document.getElementById("root"));
结果如下:
true
React推荐使用内联样式,我们可以使用camelCase语法来设置内联式,React会在指定元素数字后自动添加px,以下实例演示了h1元素添加myStyle内联样式
var myStyle = { fontSize: 22, background: '#f99'}render( <div> <h1 style={myStyle}>喜欢我就点我哦</h1> </div>, document.getElementById("root"));
如果加px也可以,但是不要忘记引号哦
var myStyle = { fontSize: '22px', background: '#f99'}render( <div> <h1 style={myStyle}>喜欢我就点我哦</h1> </div>, document.getElementById("root"));
注释
注释需要写在花括号中,如下
render( <div> <h1 style={myStyle}>喜欢我就点我哦</h1> {/*我在深圳等你*/} </div>, document.getElementById("root"));
{/*我在深圳等你*/}
这种写法是JSX的语法,所以一定要写在JSX内部。
在外边这样写注释,还是有所不同哦.
render( /*喜欢我吗?*/ <div> <h1 style={myStyle}>喜欢我就点我哦</h1> {/*我在深圳等你*/} </div>, document.getElementById("root"));
如果这样写,会出现什么情况呢?
render( /*喜欢我吗?*/ <div> <h1 style={myStyle}>喜欢我就点我哦</h1> /*我在深圳等你*/ </div>, document.getElementById("root"));
结果会输出原文
喜欢我就点我哦/*我在深圳等你*/
数组
JSX允许在模板中插入数组,数组会自动展开所有成员
var arr = [ "你若在我心上,情敌三千又何妨?", "我若在你心上,负了天下有怎样?"]render( <div> <h1>{arr}</h1> </div>, document.getElementById("root"));
输出结果如下
你若在我心上,情敌三千又何妨?我若在你心上,负了天下有怎样?
HTML和React组件
react可以渲染HTML标签和React组件
要渲染HTML标签,只需要在JSX中使用小写的标签名
var myDiv = <div />render( <myDiv />, document.getElementById("root"));
要渲染React组件,需要大写组件名。
import React,{ Component } from "react";import { render } from "react-dom";class Main extends Component{ render(){ return( <div> </div> ) }}render( <Main />, document.getElementById("root"));
react以大小写的约定来区分本地组件的类和HTML标签
注意:
由于 JSX 就是 JavaScript,一些标识符像 class 和 for 不建议作为 XML 属性名。作为替代,React DOM 使用 className 和 htmlFor 来做对应的属性。
- jsx语法
- jsx语法
- JSX语法
- jsx语法
- JSX语法
- JSX语法及特点
- React之JSX语法
- React(2) JSX语法
- React之JSX语法
- JSX语法详解
- React之JSX语法
- JSX语法详解
- JSX语法详解
- JSX语法简介
- JSX语法详解
- 第三章 JSX语法
- JSX语法入门
- JSX语法糖
- 关于总线的小知识点总结
- ElasticSearch fielddata is disabled on text fields by default. set fielddata=true on interests
- Python 娱乐项目:用BeautifulSoup抓取时光网图片
- 排序算法——希尔排序(Shell Sort)
- centos6.5搭建PHP环境步骤
- JSX语法
- Bag of Words(BOW)模型
- ubuntu 14.04 安装fcitx以及搜狗拼音输入法
- 多线程
- 插入排序C++实现
- 编程第五十天
- find按照文件大小查找
- 实际应用的css箭头
- 设计模式—工厂模式(五)