react基础之reactHooks

文章目录

    • [React Hooks 使用指南](#React Hooks 使用指南)
    • 小结

React Hooks 使用指南

React Hooks 是 React 16.8 引入的一种新特性,允许在函数组件中使用状态和其他 React 特性,而无需编写类组件。以下是一些基础的 Hooks 及其使用规则。

常用 Hooks
  1. useState

    用于在函数组件中添加状态。

    javascript 复制代码
    import React, { useState } from 'react';
    
    function Counter() {
        const [count, setCount] = useState(0);
        return (
            <div>
                <p>Count: {count}</p>
                <button onClick={() => setCount(count + 1)}>Increment</button>
            </div>
        );
    }
  2. useEffect

    处理副作用(如数据获取、订阅等)。

    javascript 复制代码
    import React, { useState, useEffect } from 'react';
    
    function DataFetchingComponent() {
        const [data, setData] = useState([]);
    
        useEffect(() => {
            fetch('https://api.example.com/data')
                .then(response => response.json())
                .then(data => setData(data));
        }, []);
    
        return (
            <div>
                {data.map(item => (
                    <div key={item.id}>{item.name}</div>
                ))}
            </div>
        );
    }
  3. useContext

    共享数据的上下文。

    javascript 复制代码
    import React, { createContext, useContext } from 'react';
    
    const MyContext = createContext();
    
    function MyComponent() {
        const value = useContext(MyContext);
        return <div>{value}</div>;
    }
    
    function App() {
        return (
            <MyContext.Provider value="Hello, World!">
                <MyComponent />
            </MyContext.Provider>
        );
    }
  4. useReducer

    管理复杂状态。

    javascript 复制代码
    import React, { useReducer } from 'react';
    
    const initialState = { count: 0 };
    
    function reducer(state, action) {
        switch (action.type) {
            case 'increment':
                return { count: state.count + 1 };
            case 'decrement':
                return { count: state.count - 1 };
            default:
                throw new Error();
        }
    }
    
    function Counter() {
        const [state, dispatch] = useReducer(reducer, initialState);
        return (
            <div>
                Count: {state.count}
                <button onClick={() => dispatch({ type: 'increment' })}>+</button>
                <button onClick={() => dispatch({ type: 'decrement' })}>-</button>
            </div>
        );
    }
  5. 自定义 Hook

    创建可复用的逻辑。

    javascript 复制代码
    import { useState, useEffect } from 'react';
    
    function useFetch(url) {
        const [data, setData] = useState(null);
        const [loading, setLoading] = useState(true);
    
        useEffect(() => {
            fetch(url)
                .then(response => response.json())
                .then(data => {
                    setData(data);
                    setLoading(false);
                });
        }, [url]);
    
        return { data, loading };
    }
使用规则
  1. 只能在函数组件或自定义 Hook 中调用:避免在常规 JavaScript 函数中使用。

  2. 必须在顶层调用:避免在循环、条件语句或嵌套函数中调用,确保每次渲染都以相同的顺序调用 Hooks。

  3. 依赖数组 :在 useEffect 和其他 Hooks 中,依赖数组用于控制副作用的执行时机,确保正确管理状态和性能。

小结

理解和掌握这些 Hooks 及其使用规则是使用 React 的重要基础,可以使函数组件变得更加强大和灵活。

您好,我是肥晨。

欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

相关推荐
记得开心一点嘛1 小时前
Trellora:基于 Electron、React 和本地知识库的 AI 知识工作台
人工智能·react.js·electron
liangshanbo12151 小时前
面试题:前端工程化中 Tree Shaking的原理是什么?
前端·treeshaking
500842 小时前
React Native for OpenHarmony 实战:三方库 react-native-url-polyfill 的鸿蒙化适配指南
javascript·react native·react.js·性能优化·electron·harmonyos
补码缩写2 小时前
视频跳转触发了seeked,画面就到位了吗
前端
库拉镜像AI牛牛2 小时前
漫剧工作室量产方案:依托知漫剧 AI 短剧降本增效
大数据·服务器·前端·人工智能·语音识别
不可能片场2 小时前
内容运营自动化 用相似度拦住撞车选题
前端·electron
静默回滚2 小时前
视频进度条跳回去,先别改事件监听
前端
米多科技2 小时前
让 AI 走进我的 3D 世界:一个 MCP server 的完整实现
javascript
Lank_M2 小时前
MP4和WebM导出后为何起播与拖动不同
前端
用户5508492902562 小时前
前端本地存储怎么选:Cookie、localStorage、sessionStorage、IndexedDB 的取舍
前端