美文网首页
React之JSX

React之JSX

作者: 天外来人 | 来源:发表于2017-01-12 20:11 被阅读33次

什么是JSX

React的核心机制之一就是虚拟DOM:可以在内存中创建虚拟的DOM元素。React利用虚拟DOM来减少对实际DOM的操作从而提升性能。当然,虚拟DOM也可以通过JavaScript来创建,例如:

var child1 = React.createElement('li', null, 'First');
var child2 = React.createElement('li', null, 'Second');

createElement语法:

ReactElement createElement(
  string/ReactClass type,
  [object props],
  [children ...]
)
创建并返回一个新的指定类型的ReactElement。type  参数可以是一个html标签名字符串(如:"div","span"等),或者是ReactClass(通过React.createClass 创建的)。

使用这样的机制,我们完全可以用JavaScript构建完整的界面DOM树,正如我们可以用JavaScript创建真实DOM。但是,这样的代码可读性差,于是React发明了JSX, 利用我们熟悉的HTML语法来创建虚拟的DOM:

var root = (
  <ul>
    <li>First</li>
    <li>Secont</li>
  </ul>
);

这两段代码是完全等价的,后者将XML语法直接加入到JavaScript代码中,让你能够高效的通过代码而不是模板来定义界面。之后JSX通过翻译器转换到纯JavaScript再由浏览器执行。
因此,JSX本身并不是什么高深的技术,可以说只是一个比较高级但很直观的语法糖。它非常有用,却不是一个必需品,没有JSX的React也可以正常工作:只要你乐意用JavaScript代码去创建这些虚拟DOM元素。

JSX语法

基本规则:遇到HTML标签(以< 开头),就用HTML规则解析;遇到代码块(以{ 开头),就用JavaScript规则解析。
例如:

var names = ['Alice', 'Emily', 'Kate'];
ReactDOM.render( 
  <div> 
  { 
    names.map(function (name) {
     return <div>Hello, {name}!</div> 
    }) 
  } 
  </div>,
 document.getElementById('example'));

输出结果:

Hello, Alice!
Hello, Emily!
Hello, Kate!

小语法总结:

  • JSX中 使用js表达式,表达式写在{}:
ReactDOM.render(
  <div>{1 + 1}</div>,
  document.getElementById('example')
);
  • JSX中 不能使用if else语句, 但可以使用三元运算表达式来替代。
var person = <Person name={window.isLoggedIn ? window.name : ' '} />;
  • JSX中注释需要写在花括号中
ReactDOM.render(
  <div>{/*注释*/}</div>,
  document.getElementById('example')
);
  • JSX中遇到数组,数组会自动展开所以成员
var arr = [<h1>Alice</h1>, <h2>Emily</h2>];
ReactDOM.render(
  <div>{arr}</div>,
  document.getElementById('example')
);

相关文章

  • 二、React小书学习摘记

    React.js 小书学习 之 【使用 JSX 描述 UI 信息】 从 JSX 到页面 过程图解:JSX 到页面过...

  • 005@关于JSX语法.md

    005@关于JSX语法 转(有所更改):React入门:关于JSX语法可以参考的资料:React.js学习笔记之J...

  • 《React极简教程》第二章 React JSX

    React JSX Why JSX?You don't have to use JSX with React. Y...

  • React.js(二)

    React JSX### React 使用 JSX 来替代常规的 JavaScript。JSX 是一个看起来很像 ...

  • ReactJS基础学习-01

    React JSX语法 React 使用 JSX 来替代常规的 JavaScript。 JSX 是一个看起来很像 ...

  • React之JSX

    1、JSX简介 JSX 的官方定义是类 XML 语法的 ECMAScript 扩展。它完美地利用了 JavaScr...

  • React之JSX

    组件简单使用类似HTML Tag,最终编译成React.createElement(component, prop...

  • React之JSX

    什么是JSX React的核心机制之一就是虚拟DOM:可以在内存中创建虚拟的DOM元素。React利用虚拟DOM来...

  • React之JSX

  • RN(三)--React JSX、初识React组件化

    一、React JSX 1. JSX简介 JSX就是Javascript和XML结合的一种格式。React发明了J...

网友评论

      本文标题:React之JSX

      本文链接:https://www.haomeiwen.com/subject/tfkjbttx.html