美文网首页
jsx 语法

jsx 语法

作者: 大诗兄_zl | 来源:发表于2017-10-09 15:42 被阅读36次

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

JSX简介

JSX就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。

当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析。

如下(JS写法)

varchild1 = React.createElement('li',null, 'First Text Content');varchild2 = React.createElement('li',null, 'Second Text Content');varroot = React.createElement('ul', { className: 'my-list' }, child1, child2);

等价于(JSX写法)

varroot =(

       
  • First Text Content
  •    
  • Second Text Content
  •  
);

后者将XML语法直接加入JS中,通过代码而非模板来高效的定义界面。之后JSX通过翻译器转换为纯JS再由浏览器执行。在实际开发中,JSX在产品打包阶段都已经编译成纯JavaScript,JSX的语法不会带来任何性能影响。另外,由于JSX只是一种语法,因此JavaScript的关键字class, for等也不能出现在XML中,而要如例子中所示,使用className, htmlFor代替,这和原生DOM在JavaScript中的创建也是一致的。JSX只是创建虚拟DOM的一种语法格式而已,除了用JSX,我们也可以用JS代码来创建虚拟DOM.

JSX语法介绍

大括号里是JavaScript,不要加引号,加引号就会被当成字符串。

三元表达式

JSX本身就和XML语法类似,可以定义属性以及子元素。唯一特殊的是可以用大括号来加入JavaScript表达式.例如:

varperson = ;

上述代码经过JSX编译后会得到:

varperson =React.createElement(

Person,

{name: window.isLoggedIn? window.name : ''}

);

数组递归

数组循环,数组的每个元素都返回一个React组件。

varlis =this.todoList.todos.map(function(todo) {return(

  •             {todo.text}   
  • );

    });varul =(

      {lis}
    );

    JSX中绑定事件

    JSX让事件直接绑定在元素上。

    Submit

    和原生HTML定义事件的唯一区别就是JSX采用驼峰写法来描述事件名称,大括号中仍然是标准的JavaScript表达式,返回一个事件处理函数。

    React并不会真正的绑定事件到每一个具体的元素上,而是采用事件代理的模式:在根节点document上为每种事件添加唯一的Listener,然后通过事件的target找到真实的触发元素。这样从触发元素到顶层节点之间的所有节点如果有绑定这个事件,React都会触发对应的事件处理函数。这就是所谓的React模拟事件系统。尽管整个事件系统由React管理,但是其API和使用方法与原生事件一致。

    JSX中使用样式

    在JSX中使用样式和真实的样式也很类似,通过style属性来定义,但和真实DOM不同的是,属性值不能是字符串而必须为对象。

    例如:

    Hello World.

    或者

    varstyle ={

    color:'#ff0000',

    fontSize:'14px'};varnode =

    HelloWorld.;

    要明确记住,{}里面是JS代码,这里传进去的是标准的JS对象。在JSX中可以使用所有的的样式,基本上属性名的转换规范就是将其写成驼峰写法,例如“background-color”变为“backgroundColor”, “font-size”变为“fontSize”,这和标准的JavaScript操作DOM样式的API是一致的。

    HTML转义

    在组件内部添加html代码,并将html代码渲染到页面上。React默认会进行HTML的转义,避免XSS攻击,如果要不转义,可以这么写:

    varcontent='content';

    React.render(

    ,document.body

    );

    自定义组件

    组件定义之后,可以利用XML语法去声明,而能够使用的XML Tag就是在当前JavaScript上下文的变量名,该变量名就是组件名称。

    相关文章

    • react-jsx

      jsx 是类似 js 模板语法 声明 jsx 使用 jsx jsx 语法 jsx 是 js 的语法扩展,在 jsx...

    • react语法结构

      1.react JSX语法原理 react是函数式编程,使用jsx语法来渲染组件。jsx语法是合法的JavaScr...

    • React 笔记

      JSX React 采用jsx语法,需用bable.js转义. JSX 语法可以和html 混写. html以< ...

    • (React)认识React语法

      一、JSX语法 在React中,没有使用HTML标签来绘制UI,而是使用了JSX语法。 当然JSX语法中,也可以嵌...

    • React 基础.md

      基本引入 js,最后的 标签是text/babel是因为JSX语法 什么是 jsx?JSX语法非常适合表示嵌套...

    • React - jsx语法

      jsx语法

    • React官网随记

      JSX jsx,一种js的语法扩展,React.createElement方法的语法糖。 在jsx中可嵌入任何表达...

    • jsx语法

      什么是jsx语法:就是符合xml规范的js语法(语法格式相对来说,要比HTML严谨) 1、如何启用jsx语法? 安...

    • 深入React技术栈:初入React世界(2)

      JSX基本语法JSX的官方定义是类XML语法的ECMAScript的扩展。 XML基本语法使用类XML语法好处之一...

    • JSX语法

      在react中,在js文件里写html标签,我们把这种语法称为 jsx语法。 jsx语法与普通js语法的区别 普通...

    网友评论

        本文标题:jsx 语法

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