首页 > 其他分享 >❤React-JSX语法认识和使用

❤React-JSX语法认识和使用

时间:2024-11-13 17:18:14浏览次数:3  
标签:语法 const name root React getElementById JSX

1、JSX基本使用

JSX是React的核心 JSX是ES的扩展 jsx语法 -> 普通的JavaScript代码 -> babel

React可以使用JSX的前提和原因:

  1. React生态系统支持: 脚手架通常用于构建React应用程序,而JSX是React框架的核心语法之一。因此,脚手架默认支持JSX语法,以便更轻松地编写和管理React组件。
  2. 提高开发效率: JSX语法使得在JavaScript代码中编写类似HTML的结构更加直观和便捷,提高了开发者的开发效率和代码可读性。
  3. 组件化开发: JSX语法支持组件化开发,使得开发者可以将UI拆分为独立的组件,更好地组织和管理代码结构,提高了应用的可维护性和可扩展性。
  4. 工具支持: 脚手架通常配置了相应的编译器或转换工具(如Babel)来将JSX转换为浏览器可执行的纯JavaScript代码,使得开发者可以在开发阶段使用JSX语法,而不必担心浏览器的兼容性问题。

React JSX语法

格外注意:

定义虚拟DOM,不要使用引号。

HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写,不仅方便了React应用程序的开发,还提高了开发效率和代码质量。

javascript


var names = ['Alice', 'Emily', 'Kate'];

React.render(
  <div>
  {
    names.map(function (name) {
      return <div>Hello, {name}!</div>
    })
  }
  </div>,
  document.getElementById('example')
);

JSX 的基本语法规则:遇到 HTML 标签(以 < 开头),就用 HTML 规则解析; 遇到代码块(以 { 开头),就用 JavaScript 规则解析。

javascript


<div id="example"></div>
<script type="text/babel">
  var names = ['Alice', 'Emily', 'Kate'];
  ReactDOM.render(
  <div>
    {
      names.map(function(name,index){
        return <div className="zhan" key={index}>这是{index}:{name} </div>
      })
    }
  </div>,
    document.getElementById('example')
  );
</script>

注意:

document.getElementById('example') 背后不能添加; 这个符号

React的命名

驼峰命名法

想要在返回的div中添加类名:使用className="zhan"而不是class

使用calss会提示

js

Invalid DOM property `class`. Did you mean `className`?

JSX允许直接在模板插入 JavaScript 变量。如果这个变量是一个数组,则会展开这个数组的所有成员。

特殊属性名

1、React的属性名使用驼峰命名法2、特殊属性名:

class=> className
for=>  htmlFor
tabindex=>tabIndex

3、没有子节点的可以以/>结尾

4、推荐:使用小括号包裹JSX,从而避免自动插入分号陷阱

javascript

使用小括号包裹jsx
const div=(<div> hello jsx </div>)

对应的错误:

(1)未使用驼峰命名法

image.png

javascript

var arr = [
  <h1>Hello world!</h1>,
  <h2>React is awesome</h2>,
];
React.render(
  <div>{arr}</div>,
  document.getElementById('example')
);

> 案例:
<div id="example"></div>
<script type="text/babel">
  var names = [
  <span className="zhan" key="1">Alice</span>,
  <span className="zhan" key="2">Emily</span>
  ];
  ReactDOM.render(
  <div>{names}</div>,
  document.getElementById('example')
  );
</script>

2、 JSX之中使用JavaScript表达式

(1) JSX中嵌入javascript表达式

javascript

const reactname='hello react 大雨';
const title=<h1>{reactname}</h1>;
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(title);

(2) JSX的条件渲染

1️⃣ 条件渲染 :

if else 加载中以及加载完成效果

JS

const isloading=true;
const loadData=()=>{
if(isloading) {
return (<div>正在加载中.......</div>)
}
return (<div>欢迎你加载完成!</div>)
};
const title=(<h1className="h1titi">{loadData()}</h1>);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(title);
2️⃣ 三元表达式

JS

const isloading=false;
const loadData=( )=>{
return isloading?(<div>正在加载中.......</div>):(<div>欢迎你加载完成!</div>);
}
const title=(<h1 className="h1titi">{loadData()}</h1>);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(title);
3️⃣ 逻辑与运算符

逻辑与运算符是一种中断操作,比如下面的就是当前面成立的时候才执行,否则不执行

JS

const isloading=false;
const loadData=()=>{
return isloading&&(<div>正在加载中.......</div>);
const title=(<h1 className="h1titi">加载效果:{loadData()}</h1>);
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(title);

(3) JSX的列表渲染

map方法

JS

const Arr=[
{name:'11',value: '11'},
{name: '22',value:'2'},
{name: '333',value:'333'},
const list=(
<ul>
{Arr.map(item=><li>{item.name}</li>)}
</ul>
)
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(list);

随后我们发现会报错:

image.png

翻译过来的意思就是:

JS

注意:渲染列表时应该添加key属性,key属性的值要保证唯一

加上key 属性唯一值,正确 同时需要注意的是:尽量避免使用索引号作为key值

JS

const list=(
<ul>
{Arr.map(item=><li
key={item.value};{item.name}</li>)}
</ul>

(4) JSX的样式处理

1️⃣ 行内样式

javascript

{Arr.map(item=
<li
style={{color:'red', backgroundColor:'cadetblue'}}
key={item.value}>{item.name}
</li>)}
2️⃣ 类名(className 推荐的方法)

js

import React from 'react';
import ReactnoM from 'react-dom/client'; //React 18
import './index.css'  // 引入样式
const Arr=[
    {name:'11',value:'11'},
    {name:'22',value:'2'},
    {name: '333',value:'333'},
]

// title 类名
const list=(
<ul>
{Arr.map(item=>
<li
className='title' !
key={item.value}>
      {item.name})
</li>
</ul>
)
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(list);

3、 JavaScript语句和表达式

javascript

复制代码注意区分:【js语句(代码)】与【js表达式】
1.表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方下面这些都是表达式:
(1).a
(2).a+b
(3).demo(1)
(4). arr.map()
(5).function test(){}2.语句(代码):
下面这些都是语句(代码):
(1).if(){}
(2).for(){}
(3).switch(){case:xxxx}

标签:语法,const,name,root,React,getElementById,JSX
From: https://blog.csdn.net/weixin_43615570/article/details/143747951

相关文章

  • selenium测试的一些语法
    元素定位语法通过ID定位:使用find_element_by_id方法,传入元素的ID属性值作为参数。例如,定位一个ID为username的输入框:element=driver.find_element_by_id("username")通过名称定位:使用find_element_by_name方法,根据元素的名称属性来定位。比如定位一个名称为password......
  • ES6常见语法详解
    原文链接:ES6常见语法详解–每天进步一点点0.什么是ES6ES的全称是ECMAScript,它是由ECMA国际标准化组织,制定的一项脚本语言的标准化规范。ES6实际上是一个泛指,泛指ES2015及后续的版本。1.let、const、var的区别let是es6中新增的语法let只对当前区块定义有效:......
  • 无插件H5播放器EasyPlayer.js网页web无插件播放器vue和react详细介绍
    EasyPlayer.jsH5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方式支持Windows、Linux、Android、iOS全平台终端的H5播放器,使用简单......
  • 构建交互式聊天界面:react-chat-element 实战小计
    react聊天组件库:react-chat-elements需求场景:用户可以通过多元的用户交互方式,如文件、图片、声音以及文字等输入相关信息,AI给出对应的回答react-chat-element介绍react-chat-elements是一个专为React开发者设计的聊天组件库,旨在简化聊天界面的开发过程,适用于构建社交应用、客......
  • C++语法·三
    内联函数(inline)简介:用inline修饰的函数叫内联函数,编译时C++编译器会在调用的地方站开内联函数,这样调用函数就不需要创建栈帧了,可以提高效率。内联函数与宏函数:C++中的内联函数与C中的宏函数很相似,都是直接在预处理时展开函数,将函数直接替换到调用位置,不额外创建栈帧。但内联......
  • JS初识_语法
    1.什么是JavaScript(简称JS)首先要了解前端以及Harmony生态中网站的组成部分(网站的三层结构)HTML表示了你的页面内有什么,组成页面的骨架(结构层)CSS表示了你的页面中每一个内容是什么样子的(样式层)JavaScript(简称js)表示了你的页面中每一个内容如何发生变化,有什么......
  • 代码整洁之道:在 React 项目中使用 ESLint 的最佳实践
    前言在现代前端开发过程中,保持代码的质量和一致性至关重要。作为一个强大的静态代码分析工具,ESLint能够帮助开发者发现和修复代码中的问题,从而确保代码的可维护性和稳定性。在本文中,我们将探讨在React项目中使用ESLint的最佳实践,涵盖安装、配置、自定义规则以及与其......
  • 在Vue组件中直接使用render函数 - jsx
    在Vue组件中直接使用render函数-jsxcreateElement函数很重要,是json转组件的重点exportdefault{name:'MyComponent',render(h){return<div>Hello,JSX!</div>;}}refvue如何支持jsxhttps://worktile.com/kb/p/3614689createElement函数很重要,是json......
  • 渗透测试---python基础:基础语法的使用
    声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人一律不承担一切后果目录一、简介:什么是python?二、python安装与共存三、pip介绍 pip的优势四、基本数据类型Python3中常见的数据类型有:Nu......
  • ReactPress:功能全面的开源发布平台
    ReactPressGithub项目地址:https://github.com/fecommunity/reactpress欢迎Star。此项目是用于构建博客网站的,包含前台展示、管理后台和后端。此项目是基于React+antd+NestJS+NextJS+MySQL的,项目已经开源,项目地址在github上,喜欢的,欢迎给个star。项目地......