React组件重构:弃用let,通过条件渲染优化返回逻辑
React组件重构方案(移除let声明)
嘿,我来帮你搞定这个组件重构的需求!不用let完全没问题,这里有两种简洁易读的实现方式,你可以根据自己的偏好选择:
方案1:嵌套三元运算符(简洁紧凑)
这种方式适合逻辑比较简单的场景,格式化后逻辑一目了然:
import React from 'react'; import Typography from '@mui/material/Typography'; import Backdrop from '@mui/material/Backdrop'; import GlobalData from './GlobalData'; // 请替换为你的组件实际路径 const YourComponent = ({ error, isSpinnerOpened }) => { return ( error ? ( <Typography variant="body1" color="error"> 出错啦!{error?.message || '未知错误'} </Typography> ) : isSpinnerOpened ? ( <Backdrop open={true}> {/* 这里可以插入你的加载Spinner组件 */} <div>加载中,请稍候...</div> </Backdrop> ) : ( <GlobalData /> ) ); }; export default YourComponent;
方案2:提前return(可读性更强)
如果后续可能扩展更多条件分支,这种提前return的写法会更清晰,不容易绕晕:
import React from 'react'; import Typography from '@mui/material/Typography'; import Backdrop from '@mui/material/Backdrop'; import GlobalData from './GlobalData'; const YourComponent = ({ error, isSpinnerOpened }) => { // 优先处理错误状态 if (error) { return ( <Typography variant="body1" color="error"> 出错啦!{error?.message || '未知错误'} </Typography> ); } // 错误不存在时,判断加载状态 if (isSpinnerOpened) { return ( <Backdrop open={true}> <div>加载中,请稍候...</div> </Backdrop> ); } // 正常状态返回业务组件 return <GlobalData />; }; export default YourComponent;
两种方案都完全移除了let的使用,直接通过条件判断返回对应UI。个人更推荐方案2,尤其是当后续需要添加更多状态分支时,可读性和维护性都会更好~
内容的提问来源于stack exchange,提问作者Carl Jugerdson
相关产品推荐
相关产品推荐

