从入门到精通:30个必学React Web开发实战例子

React Web 开发是一个充满挑战和机遇的领域。从基础的组件编写到复杂的单页面应用(SPA)开发,React 提供了丰富的工具和库来帮助开发者。以下是从入门到精通的30个React Web开发实战例子,旨在帮助开发者掌握React的核心概念和高级技巧。
1. 创建简单的计数器应用
这个例子用于理解React的基础概念,如JSX、组件状态和事件处理。
import React, { useState } from ‘react’;

function Counter() {
const [count, setCount] = useState(0);

return (

You clicked {count} times

);
}

export default Counter;
2. 条件渲染
使用React的条件渲染来根据条件显示不同的UI元素。
function Greeting(props) {
const { isLoggedIn } = props;
return isLoggedIn ?

Welcome!

:

Please login

;
}
3. 列表渲染
了解如何使用JSX渲染列表,并学习key属性的重要性。
function List() {
const items = [‘Apple’, ‘Banana’, ‘Cherry’];
return (

    {items.map((item, index) =>

  • {item}
  • )}

);
}
4. 状态提升
学习如何在组件树中共享状态,以及如何使用状态提升来解决跨组件通信的问题。
function ParentComponent() {
const [value, setValue] = useState(”);

return (

setValue(e.target.value)} />

);
}
5. 受控组件与非受控组件
理解受控和非受控组件的区别,以及何时使用它们。
// 受控组件
class ControlledInput extends React.Component {
constructor(props) {
super(props);
this.state = { value: ” };
}

render() {
return ;
}

handleChange = (event) => {
this.setState({ value: event.target.value });
}
}

// 非受控组件
function UnControlledInput() {
const inputRef = React.createRef();

return (


);
}
6. 生命周期方法
探索组件的生命周期,并了解不同生命周期方法的使用场景。
class LifecycleComponent extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}

componentDidMount() {
console.log(‘Component did mount’);
}

componentDidUpdate(prevProps, prevState) {
console.log(‘Component did update’);
}

componentWillUnmount() {
console.log(‘Component will unmount’);
}

render() {
return

{this.state.count}

;
}
}
7. 虚拟DOM和Reconciliation
了解React的虚拟DOM和Reconciliation算法,以及它们如何优化性能。
8. JSX语法
学习JSX语法,它是React中编写UI的主要方式。
const element =

Hello, world!

;
9. 组件化
掌握组件化的概念,将UI分解为可复用的组件。
10. 高阶组件(HOC)
了解高阶组件,它是React中用于代码复用和抽象的强大工具。
function withCount(WrappedComponent) {
return function WithCount(props) {
return ;
};
}
11. render props
学习使用render props来传递函数,从而实现组件的重用。
function List({ items, renderItem }) {
return (

    {items.map(item =>

  • {renderItem(item)}
  • )}

);
}
12. 上下文(Context)
了解React的上下文API,它用于在组件树中共享数据。
const MyContext = React.createContext();

function MyComponent() {
return (



);
}
13. 使用Hooks
探索React Hooks,它们允许你在函数组件中使用状态和其他React特性。
function Counter() {
const [count, setCount] = useState(0);

return (

You clicked {count} times

);
}
14. 使用useEffect
了解useEffect Hook,它使你能够在组件中执行副作用操作。
useEffect(() => {
// 副作用
document.title = `You clicked ${count} times`;
}, [count]); // 依赖项
15. 使用useCallback
学习useCallback Hook,它返回一个记忆化的回调函数。
const memoizedCallback = useCallback(
() => {
doSomething(a, b);
},
[a, b] // 依赖项
);
16. 使用useMemo
掌握useMemo Hook,它用于记忆化计算结果。
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
17. 使用useRef
了解useRef Hook,它返回一个可变的ref对象。
const inputEl = useRef(null);

// 现在你可以访问input元素的DOM节点
inputEl.current.focus();
18. 使用useReducer
学习useReducer Hook,它是一个替代useState的更强大的状态容器。
function Counter() {
const [state, dispatch] = useReducer(reducer, { count: 0 });

return (

Count: {state.count}

);
}
19. 使用useContext
掌握useContext Hook,它用于订阅context的变化。
const CountContext = React.createContext();

function App() {
const [count, setCount] = useState(0);

return (



);
}
20. 自定义Hooks
了解如何创建自定义Hooks,它们是JavaScript函数,可以封装一些逻辑并返回React状态。
function useCustomHook() {
const [count, setCount] = useState(0);

return { count, setCount };
}
21. 路由
学习如何使用React Router进行页面导航。
import { BrowserRouter as Router, Route, Switch } from ‘react-router-dom’;

function App() {
return (


About
Home
Not Found


);
}
22. 高级组件和HOC
探索高级组件和HOC的更多高级用法,如高阶HOC和渲染道具。
23. 错误边界
了解如何使用错误边界来捕获和处理组件树中的JavaScript错误。
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}

static getDerivedStateFromError(error) {
return { hasError: true };
}

componentDidCatch(error, errorInfo) {
// 你可以将错误日志上报给服务器
}

render() {
if (this.state.hasError) {
return

Something went wrong.

;
}

return this.props.children;
}
}
24. CSS-in-JS
学习如何使用CSS-in-JS库,如styled-components,来编写样式。
import styled from ‘styled-components’;

const Title = styled.h1`
font-size: 2rem;
color: palevioletred;
`;
25. CSS Modules
了解CSS Modules,它是一种将CSS封装到组件中的方法。
/* MyComponent.module.css */
.button {
background-color: blue;
color: white;
}
26. 动画和过渡
学习如何使用CSS动画和过渡来增强用户体验。
/* MyComponent.module.css */
.fade-enter {
opacity: 0;
}

.fade-enter-active {
opacity: 1;
transition: opacity 500ms ease-in;
}
27. 高性能组件
了解如何使用React.memo和shouldComponentUpdate来避免不必要的渲染。
function MyComponent(props) {
// …
}

export default React.memo(MyComponent);
28. 网络请求
学习如何使用fetch API或axios来从服务器请求数据。
async function fetchData() {
const response = await fetch(‘/api/data’);
const data = await response.json();
return data;
}
29. 状态管理
探索不同的状态管理库,如Redux、MobX和Context API。
30. 性能优化
了解如何进行性能优化,包括代码拆分、懒加载、服务端渲染和Web Workers。
通过以上30个实战例子,你可以从React Web开发的入门阶段逐步提升到精通水平。每个例子都涵盖了React的不同方面,从基础到高级,帮助你构建高性能和可维护的Web应用。