optimizing-with-react-compiler
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseReact Compiler Awareness
React Compiler 认知
React Compiler (available separately) automatically memoizes code, reducing need for manual optimization. (verify use in project before using this skill)
React Compiler(需单独获取)可自动对代码进行记忆化处理,减少手动优化的需求。(使用此技能前请先确认项目中是否已启用它)
What React Compiler Handles
React Compiler 能处理哪些内容
Automatically memoizes:
- Component re-renders
- Expensive calculations
- Function references
- Object/array creation
Before (Manual Memoization):
javascript
function Component({ items }) {
const sortedItems = useMemo(() => {
return [...items].sort((a, b) => a.name.localeCompare(b.name));
}, [items]);
const handleClick = useCallback(() => {
console.log('Clicked');
}, []);
return <List items={sortedItems} onClick={handleClick} />;
}After (React Compiler):
javascript
function Component({ items }) {
const sortedItems = [...items].sort((a, b) => a.name.localeCompare(b.name));
const handleClick = () => {
console.log('Clicked');
};
return <List items={sortedItems} onClick={handleClick} />;
}自动记忆化处理以下内容:
- 组件重渲染
- 高开销计算
- 函数引用
- 对象/数组创建
手动记忆化的旧写法:
javascript
function Component({ items }) {
const sortedItems = useMemo(() => {
return [...items].sort((a, b) => a.name.localeCompare(b.name));
}, [items]);
const handleClick = useCallback(() => {
console.log('Clicked');
}, []);
return <List items={sortedItems} onClick={handleClick} />;
}使用React Compiler后的新写法:
javascript
function Component({ items }) {
const sortedItems = [...items].sort((a, b) => a.name.localeCompare(b.name));
const handleClick = () => {
console.log('Clicked');
};
return <List items={sortedItems} onClick={handleClick} />;
}When Manual Memoization Still Needed
仍需手动记忆化的场景
Keep when:
useMemo- Extremely expensive calculations (> 100ms)
- Third-party libraries require stable references
- React Profiler shows specific performance issues
Keep when:
React.memo- Component re-renders are very expensive
- Props rarely change but parent re-renders often
- Verified performance improvement with Profiler
在以下情况保留:
useMemo- 极高开销的计算(耗时>100ms)
- 第三方库需要稳定引用
- React Profiler显示存在特定性能问题
在以下情况保留:
React.memo- 组件重渲染开销极大
- Props很少变化但父组件频繁重渲染
- 经Profiler验证能提升性能
Performance Best Practices
性能最佳实践
Do:
- Trust React Compiler for most optimizations
- Keep components small and focused
- Keep state local
- Use children prop pattern
Don't:
- Add premature memoization
- Over-engineer performance
- Skip measuring actual impact
For comprehensive React Compiler information, see: lines 1179-1223.
research/react-19-comprehensive.md推荐做法:
- 多数优化场景信任React Compiler即可
- 保持组件小巧且职责单一
- 保持状态本地化
- 使用子组件属性模式
不推荐做法:
- 过早添加记忆化处理
- 过度设计性能优化
- 跳过实际影响的测量
如需了解React Compiler的全面信息,请参阅:第1179-1223行。
research/react-19-comprehensive.md