React教程

React JSX

我们已经看到,所有的React组件都具有 render 功能。 render函数指定React组件的HTML输出。 JSX(JavaScript扩展)是一个React扩展,它允许编写类似于HTML的JavaScript代码。换句话说,JSX是React扩展ECMAScript的类似HTML的语法,因此类似于HTML 的语法可以与JavaScript/React代码共存。 预处理器(即像babel这样的编译器)使用该语法将类似HTML的语法转换为JavaScript引擎将解析的标准JavaScript对象。
JSX提供了编写HTML的功能在您编写JavaScript代码的同一文件中的类似/XML的结构(例如,类似DOM的树结构),然后预处理器会将这些表达式转换为实际的JavaScript代码。就像XML/HTML一样,JSX标记具有标记名称,属性和子代。

示例

在这里,我们将在JSX文件中编写JSX语法,然后查看相应的由预处理器(babel)转换的JavaScript代码。
JSX文件
<div>Hello lidihuo</div>
对应的输出
React.createElement("div", null, "Hello lidihuo");
上面的行创建一个 react元素,并在其中传递三个参数,其中第一个是div元素的名称,第二个是属性传递到div标签中,最后传递的是 content ,即" Hello lidihuo"。

为什么要使用JSX?

它比常规JavaScript快,因为它可以在将代码转换为JavaScript的同时进行优化。 React不会通过将标记和逻辑放在单独的文件中来分离技术,而是使用包含两者的组件。我们将在下一节中学习组件。 这是类型安全的,大多数错误都可以在编译时发现。 这使得创建模板更加容易。

JSX中的嵌套元素

要使用多个元素,需要用一个容器元素包装它。在这里,我们使用 div 作为容器元素,其中包含三个嵌套元素。
App.JSX
import React, { Component } from 'react';
class App extends Component{
   render(){
      return(
         <div>
            <h1>lidihuo</h1>
        <h2>Training Institutes</h2>
            <p>this website contains the best CS tutorials.</p>
         </div>
      );
   }
}
export default App;

JSX属性

JSX使用具有与常规HTML相同的HTML元素的属性。 JSX对属性使用 camelcase 命名约定,而不是HTML的标准命名约定,例如HTML中的类在JSX中变为 className,因为该类是JavaScript中的保留关键字。我们还可以在JSX中使用我们自己的自定义属性。对于自定义属性,我们需要使用数据前缀。
标签的属性。

例子

import React, { Component } from 'react';
class App extends Component{
   render(){
      return(
         <div>
             <h1>lidihuo</h1>
         <h2>Training Institutes</h2>
             <p data-demoAttribute = "demo">this website contains the best CS tutorials.</p>
         </div>
      );
   }
}
export default App;
在JSX中,我们可以通过两种方式指定属性值:
1、作为字符串文字: : 我们可以在双引号中指定属性的值:
var element = <h2 className = "firstAttribute">Hello lidihuo</h2>;
示例
import React, { Component } from 'react';
class App extends Component{
   render(){
      return(
         <div>
            <h1 className = "hello" >lidihuo</h1>
            <p data-demoAttribute = "demo">this website contains the best CS tutorials.</p>
         </div>
      );
   }
}
export default App;
lidihuo
this website contains the best CS tutorials.
2、作为表达式: 我们可以使用大括号{}:
将属性的值指定为表达式
var element = <h2 className = {varName}>Hello lidihuo</h2>;
示例
import React, { Component } from 'react';
class App extends Component{
   render(){
      return(
         <div>
            <h1 className = "hello" >{25+20}</h1>
         </div>
      );
   }
}
export default App;
输出:
45

JSX注释

JSX允许我们使用以/*开头并以*/结束的注释,并将其包装在花括号{}中,就像JSX表达式一样。下面的示例显示了如何在JSX中使用注释。

示例

import React, { Component } from 'react';
class App extends Component{
   render(){
      return(
         <div>
            <h1 className = "hello" >Hello lidihuo</h1>
      {/* this is a comment in JSX */} 
         </div>
      );
   }
}
export default App;

JSX样式

React始终建议使用 inline 样式。要设置内联样式,您需要使用 camelCase 语法。 React自动允许在特定元素的数字值后附加 px 。以下示例显示了如何在元素中使用样式。

示例

import React, { Component } from 'react';
class App extends Component{
   render(){
     var myStyle = {
         fontSize: 80,
         fontFamily: 'Courier',
         color: '#003300'
      }
      return (
         <div>
            <h1 style = {myStyle}>www.lidihuo.com</h1>
         </div>
      );
   }
}
export default App;
输出:
注意: 注意: JSX不允许使用if-else语句。代替它,您可以使用条件(三元)表达式。在下面的示例中可以看到。

示例

import React, { Component } from 'react';
class App extends Component{
   render(){
      var i = 5;
      return (
         <div>
            <h1>{i == 1 ? 'True!' : 'False!'}</h1>
         </div>
      );
   }
}
export default App;
输出:
False!

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4