React速查表

React核心语法速查表,涵盖JSX、组件、Hooks、状态管理、路由、Context、性能优化等常用API参考。

📝 JSX语法

语法说明
<div>Hello</div>JSX元素
<Component />自闭合组件
{expression}在JSX中嵌入表达式
{condition ? <A/> : <B/>}条件渲染
{items.map(i => <li key={i.id}>{i.name}</li>)}列表渲染(必须提供key)
<>content</>Fragment片段,不产生额外DOM节点
className="name"指定CSS类名(非class)
style={{ color: "red" }}内联样式(对象形式)
dangerouslySetInnerHTML={{ __html: html }}渲染原始HTML(谨慎使用)
htmlFor="id"绑定label的for属性

🧩 组件

语法说明
function App() { return <div/> }函数组件定义
const App = () => <div/>箭头函数组件
function Greeting({ name }) { ... }解构props
Greeting.defaultProps = { name: "World" }设置默认props
App.propTypes = { name: PropTypes.string }props类型检查
function App({ children }) { ... }children prop
<App key={id} />使用key标识组件
React.memo(Component)高阶组件,避免不必要的重渲染

🪝 Hooks

Hook说明
useState(initialValue)声明状态变量,返回 [value, setValue]
const [a, setA] = useState(0)带初始值的状态声明
setA(prev => prev + 1)基于前一个状态更新(函数式更新)
useEffect(() => { ... }, [deps])副作用处理,deps变化时执行
useEffect(() => { ... return cleanup }, [])带清理函数的副作用(组件卸载时执行)
useEffect(() => { ... })每次渲染都执行的副作用
useContext(MyContext)读取Context值
useRef(initialValue)创建可变引用对象 { current: value }
useMemo(() => compute(a, b), [a, b])缓存计算结果,依赖不变则不重算
useCallback(fn, [deps])缓存函数引用,避免子组件重渲染
useReducer(reducer, initialState)复杂状态管理,类似Redux模式
useImperativeHandle(ref, () => ({ ... }))自定义ref暴露的实例方法
useLayoutEffect(() => { ... }, [deps])DOM更新后同步执行的副作用
useId()生成唯一的SSR安全ID
useTransition()标记非紧急更新,提升交互性能
useDeferredValue(value)延迟更新值,不阻塞交互

🖱️ 事件处理

语法说明
onClick={() => handleClick(id)}点击事件
onChange={(e) => setValue(e.target.value)}输入变化事件
onSubmit={(e) => { e.preventDefault(); ... }}表单提交事件
onKeyDown={(e) => { if (e.key === "Enter") ... }}键盘事件
e.preventDefault()阻止默认行为
e.stopPropagation()阻止事件冒泡
e.target.value获取输入元素的值
e.target.name获取输入元素的name

🔀 条件渲染

语法说明
{isLoggedIn ? <Dashboard/> : <Login/>}三元运算符
{isLoggedIn && <Dashboard/>}逻辑与短路(false时不渲染)
{items.length === 0 && <p>空</p>}空列表提示
return null返回null不渲染任何DOM
{(() => { switch(role) { case "admin": return <Admin/>; ... } })()}IIFE实现switch条件
if (loading) return <Spinner/>提前return实现条件渲染

📋 列表渲染

语法说明
{items.map(item => <li key={item.id}>{item.name}</li>)}基本列表渲染
{items.filter(i => i.active).map(...)}过滤后渲染
{items.length > 0 ? <List/> : <Empty/>}空列表判断
key={item.id}使用唯一标识作为key(非index)
<Fragment key={item.id}>...</Fragment>列表中使用Fragment并带key

🌐 Context API

语法说明
const MyContext = createContext(defaultValue)创建Context对象
<MyContext.Provider value={data}>...</MyContext.Provider>提供Context值
const value = useContext(MyContext)消费Context值
createContext(null)创建无默认值的Context
MyContext.displayName = "MyContext"设置Context调试显示名称
const ThemeContext = createContext("light")创建带默认值的Context

⚡ 性能优化

API说明
React.memo(Component)纯组件,props不变则跳过重渲染
React.memo(Component, areEqual)自定义比较函数的memo
useMemo(() => compute(a), [a])缓存计算结果,避免重复计算
useCallback(fn, [deps])缓存函数引用,传递给memo子组件
React.lazy(() => import("./Heavy"))代码拆分,懒加载组件
<Suspense fallback={<Spinner/>}><Lazy/></Suspense>包裹懒加载组件,显示加载状态
useTransition()标记低优先级更新
useDeferredValue(value)延迟值更新
key={uniqueId}使用key强制重建组件(重置状态)

关于React

React是用于构建用户界面的JavaScript库,采用声明式编程范式。掌握这些核心概念和API可以帮助你高效地构建可维护的现代Web应用。建议配合React DevTools进行调试。