React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它专注于视图层,让开发者可以用声明式的编码方式创建交互式的 UI。以下是 React 前端框架的一些关键概念和用法:
1. 基础概念
组件(Components)
React 应用由组件构成。组件是可复用的 UI 元素,它们有自己的状态和属性。
JSX
JSX 是 JavaScript 的一个语法扩展,它看起来很像 XML 或 HTML。React 使用 JSX 来描述用户界面应该呈现出什么样子。
元素(Elements)
React 元素是对 UI 的轻量级描述。它们是不可变的。
虚拟 DOM(Virtual DOM)
React 使用虚拟 DOM 来渲染 UI,并且通过 diff 算法高效地更新真实 DOM。
2. 组件类型
函数组件
使用 JavaScript 函数创建的组件。
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
类组件
使用 ES6 的类创建的组件。
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
3. 状态管理
State
状态是组件内部管理的数据。
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
Props
属性(Props)是组件的输入,它们是不可变的。
<Welcome name="Sara" />
4. 生命周期方法
React 组件有生命周期方法,如 componentDidMount
, componentDidUpdate
, 和 componentWillUnmount
。
5. 事件处理
React 元素可以很容易地添加事件处理函数。
function handleClick() {
console.log('Clicked!');
}
<button onClick={handleClick}>Click me</button>
6. 条件渲染
React 中的条件渲染和 JavaScript 中的条件运算非常相似。
function Greeting(props) {
if (props.isLoggedIn) {
return <h1>Welcome back!</h1>;
}
return <h1>Please log in.</h1>;
}
7. 列表 & Keys
使用 map()
函数渲染列表数据,并且每个列表项应该有一个独特的 key
属性。
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
<li key={number.toString()}>
{number}
</li>
);
8. 状态提升
将多个组件需要共享的状态提升到它们的最近共同祖先中。
9. Hook
React 16.8 引入了 Hook,它允许在不编写类的情况下使用 state 以及其他的 React 特性。
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
10. 路由
React Router 是 React 生态系统中用于页面导航的库。
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
</ul>
</nav>
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
</div>
</Router>
);
}
React 提供了强大的功能,让开发者能够创建高效、响应式的用户界面。上述只是 React 的基础内容,实际上它还有更多高级特性和生态系统中的库,比如 Redux 用于状态管理,Next.js 用于服务器端渲染等。