🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》
React Hooks 是 React 16.8 版本中引入的一项新功能,它允许开发者在不编写 class 组件的情况下使用 state、effect、memo
等功能。
React Hooks 具有以下特点和用途:
总之,React Hooks 是 React 16.8 版本中引入的一项新功能,它允许开发者在不编写 class 组件的情况下使用 state、effect、memo 等功能
,使代码更加简洁、易读、灵活、易于测试和轻量级。
React Hooks 可以用于以下场景:
useState
处理组件中的数据变化,如表单输入、API 请求等。useState
处理用户输入,如输入框内容、按钮点击等。useEffect
处理副作用,如订阅数据、发送事件等。useMemo
缓存计算结果,避免在每次渲染时都进行相同的计算。useCallback
优化函数调用,避免在每次渲染时都创建新的函数。useRef
获取元素的引用,如获取表单元素的引用、获取组件的引用等。useState
和 useCallback
处理列表和数组,如处理表格数据、处理下拉菜单数据等。useReducer
进行状态管理,如处理undo/redo操作、处理事务等。总之,React Hooks 可以用于处理数据变化、处理用户输入、处理条件逻辑、处理副作用处理、缓存计算结果、优化函数调用、获取元素引用、处理列表和数组、状态管理等场景。
React Hooks 可以实现以下功能:
import React, { useState } from 'react';
function Example() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
import React, { createContext, useContext } from 'react';
const ThemeContext = createContext('light');
function Example() {
return (
<ThemeContext.Provider value="dark">
<p>The theme is {useContext(ThemeContext)}</p>
</ThemeContext.Provider>
);
}
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 Example() {
const [state, dispatch] = useReducer(reducer, initialState);
return (
<div>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({ type: 'increment' })}>
+
</button>
<button onClick={() => dispatch({ type: 'decrement' })}>
-
</button>
</div>
);
}
import React, { useState, useCallback } from 'react';
function Example() {
const [count, setCount] = useState(0);
const handleClick = useCallback(() => setCount(count + 1), [count]);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={handleClick}>Click me</button>
</div>
);
}
import React, { useState, useMemo } from 'react';
function Example() {
const [count, setCount] = useState(0);
const doubledCount = useMemo(() => count * 2, [count]);
return (
<div>
<p>You clicked {count} times</p>
<p>Doubled count: {doubledCount}</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
import React, { useRef } from 'react';
function Example() {
const inputRef = useRef(null);
return (
<div>
<input ref={inputRef} type="text" />
<button onClick={() => inputRef.current.focus()}>Focus</button>
</div>
);