在 react 中,推荐通过父组件控制子组件的渲染(如 `condition &&
在 React 开发中,条件渲染是高频需求,但实现方式直接影响性能、可维护性与代码语义清晰度。最推荐的方式是在父组件中控制是否渲染子组件,即采用 condition &&
// ✅ 推荐:父组件决定是否挂载,子组件完全不执行 const Parent = () => { const [isReady, setIsReady] = useState(false); return ( {isReady &&
} {/* MyComponent 不会初始化,无 hooks 执行 */} ); }; const MyComponent = () => { // ✅ 这些逻辑仅在 isReady === true 时才会执行 useEffect(() => { console.log('Mounted!'); }, []); const expensiveCalculation = useMemo(() => { return heavyComputation(); }, []); return Content; };
相比之下,将条件判断移入子组件内部(如 if (!props.isRender) return null)虽能“隐藏”内容,但存在明显缺陷:
而父级条件渲染天然支持性能优化:
const LazyComponent = React.lazy(() => import('./LazyComponent'));
// ✅ 可与 Suspense 结合,首次满足条件时才下载并初始化
{show && (
}>
)}⚠️ 注意事项:
总结:条件渲染的本质不是“隐藏”,而是“按需创建”。优先选择父组件级控制,既符合 React 的声明式心智模型,又能保障性能、可预测性与可测试性。