当前位置: 首页 > news >正文

React环境搭建及语法简介

React 是目前最流行的前端框架之一,其核心是组件化开发和虚拟 DOM。以下从基础语法到高级特性,为你提供系统化的学习路径和代码示例。

一、基础环境搭建

首先需要安装 Node.js(包含 npm 或 yarn),然后创建 React 项目:

# 使用 create-react-app 脚手架
npx create-react-app my-react-app
cd my-react-app
npm start  # 启动开发服务器

二、核心语法与概念

1. 组件定义

React 组件分为函数组件类组件,推荐使用函数组件(更简洁,配合 Hooks)。

// 函数组件(推荐)
const Welcome = (props) => {return <h1>Hello, {props.name}</h1>;
};// 类组件(旧写法)
class Welcome extends React.Component {render() {return <h1>Hello, {this.props.name}</h1>;}
}
2. JSX 语法

JSX 是 JavaScript 的语法扩展,用于描述 UI 结构:

const element = (<div className="container"><h1>Hello, JSX!</h1><p>{1 + 2}</p>  {/* 嵌入表达式 */}{true && <p>条件渲染</p>}</div>
);
  • 注意
    • 类名使用 className 而非 class
    • 标签必须闭合(如 <img />
    • 支持表达式嵌入 {}
3. 状态管理(State)

使用 useState Hook 管理组件内部状态:

import { useState } from 'react';const Counter = () => {const [count, setCount] = useState(0);  // 初始化状态return (<div><p>Count: {count}</p><button onClick={() => setCount(count + 1)}>Increment</button></div>);
};
4. 生命周期(Hooks 版)

useEffect 替代类组件的 componentDidMountcomponentDidUpdatecomponentWillUnmount

import { useEffect, useState } from 'react';const Example = () => {const [data, setData] = useState(null);useEffect(() => {// 组件挂载后执行(类似 componentDidMount)fetchData();// 清理函数(类似 componentWillUnmount)return () => {// 资源清理逻辑};}, []);  // 空依赖数组表示只执行一次return <div>{data}</div>;
};
5. 组件通信
  • 父→子:通过 props 传递数据
  • 子→父:通过回调函数传递数据
// 父组件
const Parent = () => {const [message, setMessage] = useState('');const handleChildClick = (newMessage) => {setMessage(newMessage);};return (<div><Child onButtonClick={handleChildClick} /><p>Received: {message}</p></div>);
};// 子组件
const Child = (props) => {return (<button onClick={() => props.onButtonClick('Hello from child')}>Send Message</button>);
};

三、高级特性

1. 条件渲染
const UserGreeting = ({ isLoggedIn }) => {return isLoggedIn ? (<p>Welcome back!</p>) : (<p>Please log in.</p>);
};
2. 列表渲染

使用 .map() 方法渲染列表,注意添加唯一 key

const TodoList = ({ todos }) => {return (<ul>{todos.map(todo => (<li key={todo.id}>{todo.text}</li>))}</ul>);
};
3. 自定义 Hooks

提取可复用的逻辑:

// useFetch.js
import { useState, useEffect } from 'react';const useFetch = (url) => {const [data, setData] = useState(null);const [loading, setLoading] = useState(true);useEffect(() => {fetch(url).then(res => res.json()).then(data => {setData(data);setLoading(false);});}, [url]);return { data, loading };
};// 使用自定义 Hook
const PostList = () => {const { data, loading } = useFetch('https://api.example.com/posts');if (loading) return <p>Loading...</p>;return <div>{data.map(post => <p key={post.id}>{post.title}</p>)}</div>;
};
4. Context API

跨层级传递数据(替代层层传递 props):

// 创建 Context
const ThemeContext = React.createContext();// 提供者组件
const App = () => {const theme = 'dark';return (<ThemeContext.Provider value={theme}><Toolbar /></ThemeContext.Provider>);
};// 深层组件使用
const Toolbar = () => {return (<div><ThemedButton /></div>);
};const ThemedButton = () => {const theme = useContext(ThemeContext);  // 使用 useContext Hookreturn <button style={{ background: theme }}>Themed Button</button>;
};

四、实践建议

  1. 官方文档:精读 React 官方文档,尤其是 Hooks 部分
  2. 练习项目
    • Todo List 应用(基础状态管理)
    • 博客评论系统(组件通信)
    • 天气查询应用(API 调用与 Context)
  3. 推荐工具
    • React DevTools(浏览器插件)
    • ESLint + Prettier(代码规范)
    • Vite(替代 Create React App,更快的构建工具)

需要我针对某个具体部分展开讲解或提供更多示例吗? 😊

相关文章:

  • PIC单片机MPLAB编译报错的一些问题及解决方法
  • python多线程详细讲解
  • Java-Matcher类
  • Grab×亚矩阵云手机:以“云端超级节点”重塑东南亚出行与数字生活生态
  • 【21】C9800配置PSK认证的WLAN
  • 【git教程】git add 命令讲解
  • 如何让ChatGPT模仿人类写作,降低AIGC率?
  • zookeeper Curator(2):Curator的节点操作
  • var let setTimeOut 经典面试题
  • 第十节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 菜单管理(下)
  • 前端与 Spring Boot 后端无感 Token 刷新 - 从原理到全栈实践
  • KS值:风控模型的“风险照妖镜”
  • 投稿爱思唯尔期刊,是什么Manuscript without Author Details,LaTeX文件怎么上传
  • 能否仅用两台服务器实现集群的高可用性??
  • 从用户到权限:解密 AWS IAM Identity Center 的授权之道
  • vue-29(创建 Nuxt.js 项目)
  • StarRocks 向量索引如何让大模型“记性更好”?
  • RK3568-drm框架
  • 软测八股--计算机网络
  • Http请求参数的区别