【React】React概念、特点和Jsx基础语法

news/2024/7/15 18:59:10 标签: react.js, 前端, 前端框架

React是什么?

React 是一个用于构建用户界面的 JavaScript 库。

  • 是一个将数据渲染为 HTML 视图的开源 JS 库
  • 它遵循基于组件的方法,有助于构建可重用的 UI 组件
  • 它用于开发复杂的交互式的 web 和移动 UI

React有什么特点

  1. 使用虚拟 DOM 而不是真正的 DOM
  2. 它可以用服务器渲染
  3. 它遵循单向数据流或数据绑定
  4. 高效
  5. 声明式编码,组件化编码

React的优点

声明式设计 −为你应用的每一个状态设计简洁的视图,当数据改变时 React 能有效地更新并正确地渲染组件。

  • 高效 −React采用Virtual DOM(虚拟DOM), 极大的提升了UI渲染(更新)效率。
  • 灵活 −React 允许你结合其他框架或库一起使用。
  • JSX − JSX 是 JavaScript 语法的扩展。JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式。
  • 组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
  • 单向响应的数据流 − React 采用了单向响应的数据流,使组件状态更容易维护, 组件模块化更易于快速开发。

虚拟DOM和真实DOM的两种创建方法

Js创建

//1.创建虚拟DOM,创建嵌套格式的dom
const VDOM=React.createElement(
    'h1',
    {id:'title'},
    React.createElement('span',{},'hello,React')
)
//2.渲染虚拟DOM到页面
ReactDOM.render(VDOM,document.querySelector('.test'))

Jsx创建

//1.创建虚拟DOM
const VDOM = (
    /* 此处一定不要写引号,因为不是字符串 */
    <h1 id="title"><span>Hello,React</span></h1>
)
//2.渲染虚拟DOM到页面React
DOM.render(VDOM,document.querySelector('.test'))

js 的写法并不是常用的,常用jsx来写,毕竟JSX更符合书写的习惯

Jsx语法

  1. 定义虚拟DOM,不能使用“”
  2. 标签中混入JS表达式的时候使用{}
    id = {myId.toUpperCase()}
  3. 样式的类名指定不能使用class,使用className
  4. 内敛样式要使用{{}}包裹
    style={{color:‘skyblue’,fontSize:‘24px’}}
  5. 不能有多个根标签,只能有一个根标签
  6. 标签必须闭合,自闭合也行
  7. 如果小写字母开头,就将标签转化为 html 同名元素,如果 html 中无该标签对应的元素,就报错;如果是大写字母开头,react 就去渲染对应的组件,如果没有就报错

注释

写在花括号里

ReactDOM.render(
	<div>
		<h1>小丞</h1>
		{/*注释...*/}
	</div>,document.getElementById('example')
);

数组

JSX 允许在模板中插入数组,数组自动展开全部成员

var arr = [<h1>小丞</h1>,<h2>同学</h2>,];
ReactDOM.render(
	<div>{arr}</div>,
	document.getElementById('example')
);

根据动态数据生成 li

const data = ['A','B','C']
const VDOM = (
<div><ul>
{
	data.map((item,index)=>{
    	return <li key={index}>{item}</li>
    })
}
</ul></div>
)
ReactDOM.render(VDOM,document.querySelector('.test'))

http://www.niftyadmin.cn/n/5045833.html

相关文章

Linux| jq命令对JSON格式数据操作

演示内容&#xff0c;输出到json1文件中&#xff1a; cat > json1 << EOF {"tokens":[{"token":"网络","start_offset":0,"end_offset":2,"type":"CN_WORD","position":0},{"…

pom文件被忽略

项目场景&#xff1a; 在idea中创建了一个项目&#xff0c;新建了一个模块 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 发现新建的模块建错了&#xff0c;然后移除模块&#xff0c;删除相关文件后&#xff0c;又新建一个相同名字的模块时&#xff0c;出…

爱看小说手机网源码全站带数据带自动采集程序/ThinkPHP内核小说网站源码+书库数据库带自动采集

爱看小说手机网源码全站带数据带自动采集程序&#xff0c;爱看小说程序源码2W条数据全站打包,自动采集程序网站源码,后台已经更新5个采集规则可以采集小说30万本大概约10G。 分享的这一款自带2w数据爱看小说网源码全站带数据打包,ThinkPHP内核小说网站源码带听书等全部插件&am…

VR全景图比平面图多了哪些优势,VR全景可以用在哪些领域

引言&#xff1a; 在数字化时代&#xff0c;虚拟现实&#xff08;VR&#xff09;全景图成为了一种能在互联网上体验现实景观的新型展示形式&#xff0c;相对于传统图片&#xff0c;它在各行业都有显著的优势。 一.VR全景图带来的优势 1.更真实的体验 VR全景图能够提供更加真…

MySQL 5与MySQL 8版本差异及MySQL 8的新功能

MySQL 5与MySQL 8版本差异及MySQL 8的新功能 在数据库管理系统中&#xff0c;MySQL是一个广泛使用、开源的解决方案。它提供了强大的功能&#xff0c;同时具有优秀的性能和可扩展性。到目前为止&#xff0c;MySQL经历了两个重要的版本升级&#xff0c;从MySQL 5到MySQL 8。这两…

ReadPaper论文阅读工具

之前看文献一直用的EndNote嘛&#xff0c;但是突然发现了它的一个弊端&#xff0c;就是说每次没看完退出去之后&#xff0c;下次再接着看的时候它不能保留我上一次的位置信息&#xff0c;又要重头开始翻阅&#xff0c;这让我感到很烦躁哈哈。&#xff08;当然也不知道是不是我哪…

MapStruct介绍以及VO、DTO、PO、DO的区别

文章目录 一.基本概念1.1VO**&#xff08;Value Object&#xff09;值对象**1.2DTO**&#xff08;Data Transfer Object&#xff09;数据传输对象**1.3 PO**&#xff08;Persistant Object&#xff09;持久对象**等同于Entity&#xff0c;这俩概念是一致的 或DO1.4 **BO&#x…

C语言原码、补码、反码以及移位操作

原码、补码、反码 正数内存中以原码存在&#xff0c;正数原码 补码 反码 // 5 整型 4 字节 原码 &#xff1a; 0000 0000 0000 0000 0000 0000 0000 0101 补码 &#xff1a; 0000 0000 0000 0000 0000 0000 0000 0101 反码 &#xff1a; 0000 0000 0000 0000 0000 0…