基本语法#
约 1113 个字 78 行代码 4 张图片 预计阅读时间 25 分钟
React概述#
React 是一个流行的声明式
库,您可以使用它构建交互式用户界面(user interfaces 、UI)。
用户界面由
按钮
、文本
和图像
等小单元内容构建而成。React帮助你把它们组合成可重用、可嵌套的组件
。
使用React的好处#
浏览器加载HTML过程#
当用户访问一个网页时,服务器会向浏览器返回一个HTML文件,浏览器
然后读取HTML并构建文档对象模型(DOM)
。
DOM
DOM
是 HTML 元素的对象表示
。它充当您的代码
和用户界面
之间的桥梁,并具有类似树状结构
的父子关系。
您可以使用DOM方法
和JavaScript来监听用户事件并通过选择、添加、更新和删除用户界面中的特定元素来操作DOM。
DOM操作不仅允许您针对特定元素,还可以更改它们的样式和内容。
js更新UI#
通过使用JavaScript
和DOM
方法向您的项目添加一个h1标签
来开始构建我们的项目。
<!DOCTYPE html>
<html>
<body>
<div id="app"></div>
<script type="text/javascript">
// 选择 ID 为 "app "的 div 元素
const app = document.getElementById('app');
// 创建新的 H1 元素
const header = document.createElement('h1');
// 为 H1 元素创建一个新文本节点
const text = 'Develop. Preview. Ship.';
const headerContent = document.createTextNode(text);
// 将文本添加到 H1 元素中
header.appendChild(headerContent);
// 将 H1 元素置于 div 内
app.appendChild(header);
</script>
</body>
</html>
Danger
使用纯JavaScript更新DOM非常强大但冗长。您已经编写了所有这些代码来添加一个带有一些文本的<h1>
元素。
命令式编程vs声明式编程#
上面使用DOM操作元素的代码是命令式编程
的一个很好的例子。
命令式编程就像给厨师逐步指示如何制作披萨。
而在声明式编程
中,开发人员可以声明他们想要显示的内容,而不必编写DOM方法会很有帮助。
声明式编程就像订购披萨而不必担心制作披萨的步骤。🍕
React 是一个流行的声明式库
,您可以使用它来构建用户界面。作为开发者,你可以告诉React你想要用户界面发生什么变化,React会自动计算出如何更新DOM的步骤。
React入门案例#
纯Html#
<html>
<body>
<div id="app"></div>
<!-- React 核心库-->
<script src="js/react.development.js"></script>
<!--专门针对DOM的方法,使您能够在DOM中使用React-->
<script src="js/react-dom.development.js"></script>
<!--babel库:用于将将你的JSX代码转换成普通的JavaScript。-->
<script src="js/babel.min.js"></script>
<!--您需要通知 Babel 要将哪些代码转换,方法是将脚本类型更改为 type=text/jsx。-->
<script type="text/jsx">
const app = document.getElementById('app');
const root = ReactDOM.createRoot(app);
root.render(<h1>Develop. Preview. Ship.</h1>);
</script>
</body>
</html>
Create React App#
Create React App 是官方支持的创建单页 React 应用程序的方式。它提供了一个现代的构建设置,无需配置。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
reportWebVitals();
使用vite创建项目#
# 使用vite创建react项目
npm create vite@latest my-vue-app -- --template react
# 或
yarn create vite my-vue-app --template react
JSX简介#
JSX
(JavaScript XML,正式称为JavaScript语法扩展)是JavaScript语言语法的类似XML的扩展。最初由Facebook创建以用于React,JSX已被多个Web框架采用。作为一种 语法糖
,JSX通常被转译成类似于原始JSX的嵌套JavaScript函数调用。
JSX代码示例:
在JSX中编写的代码需要使用诸如Babel
之类的工具进行转换,以便能够被Web浏览器
理解。这种处理通常是在软件构建
过程中进行的,在应用程序部署之前。
组件(component)#
组件概述#
用户界面可以分解为称为组件
( 应用程序中可复用的 UI 元素)的较小构建块。
组件允许您构建独立的、可重复使用的代码片段。如果您将组件视为乐高积木,您可以将这些单独的积木组合在一起,形成更大的结构。如果您需要更新UI的某个部分,您可以更新特定的组件或积木。
这种模块化
使得您的代码在不断增长时更易于维护,因为您可以添加、更新和删除组件而不影响我们应用程序的其他部分。
React组件是一段可以使用标签进行扩展的JavaScript函数
。在函数的返回语句中,你可以编写JSX
。
React组件应该大写
以区分它们与普通的HTML和JavaScript。
您可以像使用常规HTML标签一样使用React组件,使用尖括号。
<html>
<body>
<div id="app"></div>
<!-- React 核心库-->
<script src="js/react.development.js"></script>
<!--专门针对DOM的方法,使您能够在DOM中使用React-->
<script src="js/react-dom.development.js"></script>
<!--babel库:用于将将你的JSX代码转换成普通的JavaScript。-->
<script src="js/babel.min.js"></script>
<!--您需要通知 Babel 要将哪些代码转换,方法是将脚本类型更改为 type=text/jsx。-->
<script type="text/jsx">
const app = document.getElementById('app');
const root = ReactDOM.createRoot(app);
/*Header组件*/
function Paragraph() {
return <p>Hello Components</p>;
}
/*HomePage组件*/
function HomePage() {
return (
<div>
{/*组件可以复用*/}
<Paragraph/>
<Paragraph/>
</div>
);
}
// 您可以像使用常规HTML标签一样使用React组件,使用尖括号
root.render(<HomePage />);
</script>
</body>
</html>
组件导出和导入#
将组件封装在单独的文件
中导出,更加有利于组件的复用。
使用export default
导出组件:
function Profile() {
return (
<img
src="https://i.imgur.com/QIrZWGIs.jpg"
alt="Alan L. Hart"
/>
);
}
export default function Gallery() {
return (
<section>
<h1>了不起的科学家们</h1>
<Profile />
<Profile />
<Profile />
</section>
);
}
使用import
导入组件:
Props#
常规的HTML元素具有属性
,您可以使用这些属性传递信息片段,从而改变这些元素的行为
。
例如,更改元素的
src属性
会更改显示的图像。更改标签的href属性会更改链接的目的地。
同样地,您可以将信息片段作为属性传递给React组件。这些被称为props
。