React 从零开始学习(二)—— JSX

2023-11-02

接上一篇,搭建的项目基本结构如下:
在这里插入图片描述

上面可以看到,React 应用程序是由 组件 组成的。一个组件是 UI(用户界面)的一部分,有自己的逻辑和外观。组件可以小到一个按钮,也可以大到整个页面。

JSX

React 组件是返回标签的 JavaScript 函数,示例如下:

function MyButton() {
  return (
    <button>This is a button!</button>
  );
}

app.js 根组件里面的内容使用的是 render 模板,也就是jsx 语法。

return 内部 ,看起来像一个简单的 HTML 元素。这里的内容被称为 JSX

React 使用 JSX 来替代常规的 JavaScriptJSX 是一个看起来很像 XMLJavaScript 语法扩展。

优点

JSX 有以下优点:

  • JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化;
  • 它是类型安全的,在编译过程中就能发现错误;
  • 使用 JSX 编写模板更加简单快速。

JSX 是在 JavaScript 内部实现的。

应用

元素是构成 React 应用的最小单位,JSX 就是用来声明 React 当中的元素。

与浏览器的 DOM 元素不同,React 当中的元素事实上是普通的对象,React DOM 可以确保 浏览器 DOM 的数据内容与 React 元素保持一致。

要将 React 元素渲染到根 DOM 节点中,通过把它们都传递给 ReactDOM.render() 的方法来将其渲染到页面上,如下:
src/App.js

import './assets/css/App.css';

function App () {
  return (
    <div className="App">
    </div>
  );
}

export default App;

src/index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render( App, document.getElementById('root')
);

也可以嵌套多个 HTML 标签,新建一个 Welcome.js 文件:

使用 ES6 类来创建一个名为 WelcomeReact 组件,render() 方法,这是类组件中唯一必须的方法,用于渲染 DOM 节点。

import React, { Component } from 'react'
class Welcome extends Component {
  render(){
    return <p>Hello,world!</p>
  }
}
export default Welcome

然后,在 app.js 中引入:

import logo from './assets/images/logo.svg';
import './assets/css/App.css';
import Welcome from './components/Welcome'

function App () {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          改一下文字 <code>src/App.js</code> Hello World!.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          学习 React
        </a>
      </header>
      <Welcome />
    </div>
  );
}

export default App;

注意:由于 JSX 就是 JavaScript,一些标识符像 classfor 不建议作为 XML 属性名。作为替代,React DOM 使用 classNamehtmlFor 来做对应的属性。

React 中,使用 className 来指定一个 CSSclass,它与 HTMLclass 属性的工作方式相同。

现在,我们可以看到组件的页面效果啦:
在这里插入图片描述
程序员的 demo 通常从 Hello World! 开始,哈哈!

JavaScript 表达式

可以在 JSX 中使用 JavaScript 表达式,表达式写在花括号 {} 中。如下:

      ReactDOM.render(
      	<div>
      	  <h1>{3+2}</h1>
        </div>
      	,
      	document.getElementById('example')
      );

JSX 中不能使用 if else 语句,但可以使用 conditional (三元运算) 表达式来替代。如下:

      let num = 2
      ReactDOM.render(
      	<div>
      	  <h1>{num==1?'true':'false'}</h1>
        </div>
      	,
      	document.getElementById('example')
      );

样式

React 推荐使用内联样式。可以使用 camelCase 语法来设置内联样式。 React 会在指定元素数字后自动添加 px 。如下:

	  let myStyle = {
        fontSize: 30,
        color: '#FFF000'
      }

      ReactDOM.render(
      	<div>
      	  <h1 style={myStyle}>{3+2}</h1>
        </div>
      	,
      	document.getElementById('example')
      );

数组

JSX 允许在模板中插入数组,数组会自动展开所有成员。如下:

	  let arr = [
	    <h1>11111111111</h1>,
	    <h1>22222222222</h1>,
	    <h1>33333333333</h1>
	  ]
      ReactDOM.render(
      	<div>
		  <div>{arr}</div>
        </div>
      	,
      	document.getElementById('example')
      );

总代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>React demo</title>
    <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
    <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
  </head>
  <body>
    <div id="example"></div>
    <script type="text/babel">
	  let num = 2
	  let myStyle = {
        fontSize: 30,
        color: '#FFF000'
      }
	  let arr = [
	    <h1>11111111111</h1>,
	    <h1>22222222222</h1>,
	    <h1>33333333333</h1>
	  ]
      ReactDOM.render(
      	<div>
      	  <h1>{3+2}</h1>
      	  <h1>{num==1?'true':'false'}</h1>
      	  <h1 style={myStyle}>{3+2}</h1>
		  <div>{arr}</div>
        </div>
      	,
      	document.getElementById('example')
      );
    </script>
  </body>
</html>

页面效果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 从零开始学习(二)—— JSX 的相关文章

随机推荐

  • 手动搭建webase(2)——节点管理服务

    前提条件 拉取代码 git clone https github com WeBankFinTech WeBASE Node Manager git 若因网络问题导致长时间下载失败 可尝试以下命令 git clone https gitee
  • 在uni-app中查询dom元素节点信息

    查询节点信息的对象 selectorQuery in component 将选择器的选取范围更改为自定义组件 component 内 返回一个 SelectorQuery 对象实例 初始时 选择器仅选取页面范围的节点 不会选取任何自定义组件
  • LableMe安装及初步使用(Mac也适用)

    环境 mac OS anaconda3 1 首先安装anaconda3 推荐此网站 下载较快https mirrors tuna tsinghua edu cn anaconda archive 下载完毕安装即可 本人之前就安装过了 在此就
  • vscode 终端无法执行pip

    1 在Windows应用中找到Windows PowerShell 右键以管理员运行 2 在命令框输入 set ExecutionPolicy RemoteSigned 回车 3 根据需要选择 这里我选择的是A 成功解决了问题 ps pow
  • Spring Boot学习之旅:(四)springboot 整合 fastjson

    springboot 默认使用的 jackson 但是听说某宝的fastjson 性能很好 而且平时用的习惯 所以来整合一下 首先在pom 中导入依赖
  • QT登陆注册界面练习

    一 界面展示 二 主要功能界面代码 include widget h include ui widget h Widget Widget QWidget parent QMainWindow parent ui new Ui Widget
  • 【Shell牛客刷题系列】SHELL13 去掉所有包含this的句子:awk与gawk命令的进阶使用

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 首先学习了用于模式扫描和处理语言的gawk命令 然
  • Django 静态文件

    静态文件 1 什么是静态文件 对于前端已经写好了的文件 我们只是拿过来使用 那么这些文件都可以称之为叫 静态文件 静态文件可以是 bootstrap一类的前段框架 已经写好了的图片 css js 静态文件默认全都放在static文件夹下 s
  • vue使用Monaco editor

    1 项目中使用monaco editor首先要安装 npm install monaco editor S 2 在组件中引用并使用 初始化 更改内容 销毁
  • day 7

    封装一个学生的类 定义一个学生这样类的vector容器 里面存放学生对象 至少3个 再把该容器中的对象 保存到文件中 再把这些学生从文件中读取出来 放入另一个容器中并且遍历输出该容器里的学生 include
  • windows系统中用Python调用linux系统shell脚本

    一 windows系统先安装 1 安装python3 5 2 安装paramiko pip install paramiko 3 卸载cryptography 2 5 python m pip uninstall cryptography
  • linux+rwx+权限值,linux权限管理:rwx

    权限管理简介 r w x 对文件及目录进行权限管理 从而达到文件及目录管理 1 rwx对于文件而言 r 可读 可以使用类似cat等命令查看文件内容 w 可写 可以编辑或删除此文件 x 可执行 exacutable 可以命令提示符下当作命令提
  • 华为机试题70-矩阵乘法计算量估算

    描述 矩阵乘法的运算量与矩阵乘法的顺序强相关 例如 A是一个50 10的矩阵 B是10 20的矩阵 C是20 5的矩阵 计算A B C有两种顺序 AB C 或者 A BC 前者需要计算15000次乘法 后者只需要3500次 编写程序计算不同
  • 新手必看!最简单的MySQL数据库详解

    本篇文章主要跟大家介绍的是详解MySQL数据库 对于新手来说帮助很大的 而且MySQL是最流行的关系型数据库管理系统 在web应用方面 MySQL也是最好的RDBMS应用软件之一 因此 感兴趣的朋友记得要看完 是什么数据库 数据库 Date
  • 微信商户平台结算周期T+1是什么意思

    我们在商户平台的管理后台 有的时候 用户支付了 可是却没有看到有资金信息 这个一般是因为您的账户类似的T 1的原因 那结算周期T 1是什么意思呢 通俗的理解就是 交易日的次日 T就是today 今天的意思 的第一个字母的大写 T 1 T 2
  • C语言中的static的用法(超级详细)

    作者 云小逸 个人主页 云小逸的主页 码云 云小逸 YunXiaoYi003 motto 要敢于一个人默默的面对自己 强大自己才是核心 不要等到什么都没有了 才下定决心去做 种一颗树 最好的时间是十年前 其次就是现在 学会自己和解 与过去和
  • yii2 ajax增删改查,Yii2 中常用的增删改查操作总结

    一 新增 1 使用save model newUser model gt name test model gt phone 13000000000 model gt email 123456 qq com model gt save 2 使
  • c语言24点核心算法,24点游戏的核心算法时.doc

    24点游戏的核心算法时 24点游戏的核心算法 时间 2010 10 15 15 10 点击 873 次 24 点游戏 就是在给定的几个数字之间加入数学运算符号 使最终结果等于 24 如下图所示 算法的思路是 1 考虑没有括号的情况 运算符为
  • 「面试」拿到B站的意向书

    此次B站服务端开发面试之旅可谓惊险 不过通过对大部分面试题套路的掌握 不出意外还是拿下了 下面我们来看看这些骚题是不是常见的不能再常见的了 这些面试题看了就能面上 当然不是 只是通过这些题让自己知道所欠缺的是什么 以及可以去看看哪些资料 1
  • React 从零开始学习(二)—— JSX

    接上一篇 搭建的项目基本结构如下 上面可以看到 React 应用程序是由 组件 组成的 一个组件是 UI 用户界面 的一部分 有自己的逻辑和外观 组件可以小到一个按钮 也可以大到整个页面 JSX React 组件是返回标签的 JavaScr