当前位置: 首页 > 科技观察

在React中使用的六个小技巧

时间:2023-03-14 00:21:40 科技观察

这是一个很可怕的问题,在React中,我们经常会写条件语句来显示不同的视图,比如这个简单的例子。constApp=()=>{return(<>{loading?:})}但是,当项目的代码量足够大,JSX条件多的时候,事情很快失控。代码变得非常混乱且可读性降低。像下面这段代码,实在是没有勇气和信心去了解它的细节。importReact,{useState}from"react"exportdefaultfunctionConditionDemo(){const[loading]=useState(false)const[isLogin]=useState(true)const[hasAuth]=useState(false)return(<>{loading?loading

:{isLogin?(hasAuth?有权限
:您无权操作
):请先登录
}})}然后,在在React中,我们可以通过哪些方式编写更具可读性和可维护性的代码?1、使用三元运算符三元运算符比较适合需要少量条件判断的场景。如果条件分支很多,就会发生上面例子的灾难。例如,要在移动设备上显示一个Mobile组件而在其他屏幕上显示另一个组件,您可以使用三元表达式:/>})}2.用“&&”简化三元运算符有时候我们可以用“&&”来简化三元表达式,比如下面的代码。展示?:null&&!!show&&为什么要使用两个感叹号将显示转换为布尔值?我将在明天的文章中与您分享有关此内容的另一篇文章。3.如果有数据,使用if语句显示List组件。如果没有数据,则不显示任何内容。使用if语句也是一个不错的选择。exportdefaultfunctionAppIf(){const{list}=useList()if(!list){returnnull}return()}当然,发送请求并不总是成功,也有可能失败.我们可以添加一些if分支来控制不同的逻辑。导出默认函数AppIf(){const{isLoading,isError,list}=useList()if(isLoading){return
Loading...
}if(isError){return
Error...
}return}4.太多使用“switch”的if语句会使组件混乱,因此我们可以将多个条件提取到包含switch语句的单独组件中。让我们看一个简单的菜单切换组件:constMenuItem({menu})=>{switch(menu){case1:returncase2:returncase3:returndefault:returnnull}}exportdefaultfunctionMenu(){const[menu,setMenu]=React.useState(1)consttoggleMenu=()=>{setMenu((m)=>{if(m===3)返回1returnm+1})}return(<>togglemenu)}你可以看到使用'switch'可以非常方便表达‘菜单’与组件的对应关系。5、使用枚举如果我们需要根据用户的不同状态显示Foo、Bar、Default这三个组件,那么枚举会比if语句更优雅。constFoo=()=>{return
foo
}constBar=()=>{return
bar
}constDefault=()=>{return
default
}conststatusMap={foo:,bar:,default:}constApp=()=>{const[status]=useState('default')return(statusMap[status])}6.使用JSX控制语句JSX控制语句库扩展了JSX的功能,让你可以直接使用JSX实现条件渲染。让我们举个例子。exportdefaultfunctionApp(props){const[hasLogin]=useState(false)//...return()}最后,以上是我今天分享给大家的6个tips。如果觉得有用,记得点赞,关注我,把这篇文章分享给你的朋友,说不定能帮到他。