在 react 中,推荐使用逻辑与运算符(`&&`)在父组件中控制子组件的渲染,而非将条件判断逻辑下沉到子组件内部;这样可避免不必要的 hook 执行、提升性能,并便于结合 `react.lazy` 实现按需加载。
在实际开发中,按条件渲染组件是高频需求,但实现方式直接影响应用的性能
与可维护性。以下是两种常见写法的对比分析与最佳实践:
const MyComponent = () => This is my component;
// ✅ 正确:条件判断在父组件层级,组件仅在 `isRender` 为 true 时被创建和挂载
{isRender && }const LazyComponent = React.lazy(() => import('./LazyComponent'));
{isRender && (
}>
)}const MyComponent = ({ isRender }) => {
// ⚠️ 危险:即使 isRender === false,以下 Hook 仍会执行!
const [count, setCount] = useState(0);
useEffect(() => { console.log('Mounted!'); }, []);
if (!isRender) return null; // 渲染被阻止,但初始化逻辑已运行
return This is my component;
};遵循这一模式,不仅能写出更高效、更可预测的 React 代码,也为后续性能优化(如代码分割、服务端渲染条件处理)打下坚实基础。