zoukankan      html  css  js  c++  java
  • 关于 JSX

        这个有趣的标签语法既不是字符串也不是HTML。

        它被称为JSX,它是JavaScript的语法扩展。我们建议使用它与React来描述UI应该是什么样子。JSX可以提醒你一个模板语言,但它伴随着JavaScript的全部力量。

     在JSX中嵌入表达式

        您可以在JSX 中嵌入任何其放在花括号中。

        例如2 + 2user.firstNameformatName(user)都是有效的表达式:

    function formatName(user) {
      return user.firstName + ' ' + user.lastName;
    }
    
    const user = {
      firstName: 'Harper',
      lastName: 'Perez'
    };
    
    const element = (
      <h1>
        Hello, {formatName(user)}!
      </h1>
    );
    
    ReactDOM.render(
      element,
      document.getElementById('root')
    );

        我们将JSX拆分为多行以提高可读性。虽然不是必需的,但当执行此操作时,我们还建议将其括在括号中,以避免自动分号插入的陷阱

    JSX是一个表达式

        编译后,JSX表达式成为常规JavaScript对象。

        这意味着你可以在if语句和for循环中使用JSX ,将它分配给变量,接受它作为参数,并从函数返回它:

    function getGreeting(user) {
      if (user) {
        return <h1>Hello, {formatName(user)}!</h1>;
      }
      return <h1>Hello, Stranger.</h1>;
    }

    使用JSX指定属性

         您可以使用引号将字符串文字指定为属性:

    const element = <div tabIndex="0"></div>;

        您还可以使用花括号将JavaScript表达式嵌入属性:

    const element = <img src={user.avatarUrl}></img>;

        在属性中嵌入JavaScript表达式时,不要在大括号中引号。否则JSX会将该属性视为字符串文字而不是表达式。您应该使用引号(对于字符串值)或花括号(对于表达式),但不能在同一属性中。

    使用JSX指定子项

        如果标记为空,您可以立即关闭它/>,如XML:

    const element = <img src={user.avatarUrl} />;

       JSX标签可能包含子元素:

    const element = (
      <div>
        <h1>Hello!</h1>
        <h2>Good to see you here.</h2>
      </div>
    );

      警告:

       由于JSX比HTML更接近JavaScript,React DOM使用camelCase属性命名约定而不是HTML属性名称。

       例如,class成为className在JSX,和tabindex成为tabIndex.

     

    JSX防止注入攻击

       在JSX中嵌入用户输入是安全的:

     
    const title = response.potentiallyMaliciousInput;
    // This is safe:
    const element = <h1>{title}</h1>;

        默认情况下,React DOM 在渲染它们之前转义嵌入在JSX中的任何值。因此,它确保你不能注入任何没有明确写在你的应用程序。在渲染之前,一切都转换为字符串。这有助于防止xss(跨站点脚本)攻击。

     

     JSX表示对象

        Babel将JSX编译为React.createElement()调用。

        这两个例子是相同的:

    const element = (
      <h1 className="greeting">
        Hello, world!
      </h1>
    );
    
    
    const element = React.createElement(
      'h1',
      {className: 'greeting'},
      'Hello, world!'
    );

      React.createElement() 执行一些检查,以帮助你编写无错误的代码,但本质上它创建一个对象像这样:

    // Note: this structure is simplified
    const element = {
      type: 'h1',
      props: {
        className: 'greeting',
        children: 'Hello, world'
      }
    };

        这些对象称为“React元素”。你可以把它们想象成你想在屏幕上看到的内容。React读取这些对象,并使用它们构造DOM并保持其为最新。

     

     
  • 相关阅读:
    在SQLite中使用索引优化查询速度
    SQLite支持的SQL数据操作
    left (outer) join , right (outer) join, full (outer) join, (inner) join, cross join 区别
    深入理解Android内存管理原理(六)
    Merge Sorted Array
    Sort Colors
    Construct Binary Tree from Preorder and Inorder Traversal
    Binary Tree Postorder Traversal
    Symmetric Tree
    Rotate Image
  • 原文地址:https://www.cnblogs.com/geek-hu/p/6431116.html
Copyright © 2011-2022 走看看