zoukankan      html  css  js  c++  java
  • React:JSX

    React的一个特色/核心机制是通过创建虚拟DOM,减少对实际DOM的操作,从而提高页面性能。

    JSX其实是把XML语法加入到JS中,我们可以用JSX来构建界面,然后JSX由转换器转换成纯JS,在浏览器中执行。在React的文档中,很直接地告诉我们JSX只是JS的一个语法拓展而已。

    1.基础语法:

    1 ReactDOM.render(
    2   <h1>Hello, world!</h1>,
    3   document.getElementById('root')
    4 );
    ReactDOM.render是核心的渲染方法:,其传入俩参数,第一个是构建的模板,第二个是挂载的DOM节点。

    2.JSX Object

    const element = <h1>Hello, world!</h1>;

    上面定义的element既不是string也不是html,而是JSX语法创建的一个UI模板,也是一个React实例--React element。在React中我们会用它来渲染DOM结构。

    当我们用typeof操作符将它console.log时,输出是一个“object”。

    3.插入表达式:

     1 const element = (
     2   <h1>
     3     Hello, {formatName(user)}!
     4   </h1>
     5 );
     6 
     7 ReactDOM.render(
     8   element,
     9   document.getElementById('root')
    10 );

    JSX和其他模板语法一样,可以在其中插入JS表达式,用一个大括号括起。

    4.JSX本身也可以作为函数返回的表达式

      由于JSX在编译后变成JS对象,因此在源代码中我们可直接将JSX作为函数的输出插入到UI模板中。

    5.JSX插入标签特性

    如果要在HTML标签中插入表达式,使用{},用引号的话只会把值作为字符串处理。

    5.多行模板

    如果JSX构建的模板想隔行,要用小括号括起:

    1 const element = (
    2   <div>
    3     <h1>Hello!</h1>
    4     <h2>Good to see you here.</h2>
    5   </div>
    6 );

    如果标签中没有子元素,记得要加闭合标签。

    6.特性名称要用驼峰写法:

    文档强调,ReactDOM中特性名称要用驼峰写法,如className取代class,tagIndex取代tagindex,因为JSX毕竟是JS而不是纯html。

    7.JSX可以防止恶意注入

    JSX在渲染之前都会对插入的值进行escape(字符串编码),所有插入值都转换为字符串。

    8.React.createElement()方法:

    在创建React模板时,除了像上面那样写html,还可以调用等价的React.createElement()。

    1 const element = React.createElement(
    2   'h1',
    3   {className: 'greeting'},
    4   'Hello, world!'
    5 );

    其产生的是如下的React element对象:

    1 // Note: this structure is simplified
    2 const element = {
    3   type: 'h1',
    4   props: {
    5     className: 'greeting',
    6     children: 'Hello, world'
    7   }
    8 };

    React使用这些对象来构建浏览器的DOM。

  • 相关阅读:
    ABB机器人 带参数例行程序
    面试题10- I:斐波那契数列(C++)
    面试题39:数组中出现次数超过一半的数字(C++)
    面试题50:第一个只出现一次的字符(C++)
    第八部分 表的基本操作
    第七部分 表中数据的基本操作
    面试题18:删除链表的节点(C++)
    面试题35:复杂链表的复制(C++)
    面试题54:二叉搜索树的第k大节点(C++)
    面试题62:圆圈中最后剩下的数字(C++)
  • 原文地址:https://www.cnblogs.com/alan2kat/p/7464003.html
Copyright © 2011-2022 走看看