React 中的条件渲染实现的多种方法

在React中,实现条件渲染通常有以下几种方法:

  1. 使用JavaScript表达式



{isLoggedIn && <UserProfile />}
  1. 使用if-else语句(不常用,因为JSX不是过程式的)



{
  if (isLoggedIn) {
    <UserProfile />
  } else {
    <GuestProfile />
  }
}
  1. 使用switch语句(同样不常用)



{
  switch (userType) {
    case 'admin':
      return <AdminProfile />;
    case 'user':
      return <UserProfile />;
    default:
      return <GuestProfile />;
  }
}
  1. 使用&&运算符进行简单的条件渲染



{showProfile && <UserProfile />}
  1. 使用三元运算符(Ternary Operator)



{isLoggedIn ? <UserProfile /> : <GuestProfile />}
  1. 使用逻辑与(&&)进行连续条件渲染



{isLoggedIn && isAdmin && <AdminDashboard />}
  1. 使用逻辑或(||)进行默认条件渲染



{isLoggedIn || <GuestProfile />}
  1. 使用条件运算符(Conditional Operator)和逻辑与(&&)结合进行复杂条件渲染



{isLoggedIn && <UserProfile user={user} />}
  1. 使用?:运算符和逻辑与(&&)结合进行复杂条件渲染



{isLoggedIn ? <UserProfile user={user} /> : null}
  1. 使用v16.6+React.createPortal创建条件渲染的DOM节点



{showModal && ReactDOM.createPortal(<Modal />, document.body)}
  1. 使用React.Fragment进行条件渲染



{isLoggedIn && (
  <React.Fragment>
    <UserProfile />
    <UserMenu />
  </React.Fragment>
)}
  1. 使用函数进行条件渲染



{renderProfile()}
 
function renderProfile() {
  if (isLoggedIn) {
    return <UserProfile />;
  }
  return null;
}
  1. 使用key属性进行条件渲染



{isLoggedIn ? <UserProfile key="user-profile" /> : <GuestProfile key="guest-profile" />}
  1. 使用React.cloneElement进行条件渲染



{isLoggedIn ? React.cloneElement(<UserProfile />, { user: userData }) : <GuestProfile />}
  1. 使用高阶组件(HOC)进行条件渲染



{isLoggedIn ? <WithUserProfile /> : <WithoutUserProfile />}
  1. 使用component属性进行条件渲染



{isLoggedIn ? <Route component={UserProfile} /> : <Route component={GuestProfile} />}
  1. 使用render属性进行条件渲染



<Route
  path="/user"
  render={() => (
    isLoggedIn ? <UserProfile /> : <Redirect to="/login" />
  )}
/>

以上是React中实现条件渲染的常用方法,开发者可以根据具体场景选择合适的方法。

最后修改于:2024年08月19日 22:03

评论已关闭

推荐阅读

Vue中使用mind-map实现在线思维导图
2024年08月04日
VUE
Web前端最全Vue实现免密登录跳转的方式_vue怎么样不登录返回首页,最强技术实现
2024年08月04日
VUE
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)
2024年08月04日
VUE
Vue-颜色选择器实现方案——>Vue-Color( 实战*1+ Demo*7)
2024年08月04日
VUE
Vue项目卡顿慢加载?这些优化技巧告诉你!_vue数据多渲染卡顿
2024年08月04日
VUE
vue中的keep-alive详解与应用场景
2024年08月04日
VUE
Vue、React实现excel导出功能(三种实现方式保姆级讲解)
2024年08月04日
vue-office/docx插件实现docx文件预览
2024年08月04日
VUE
java调用js文件的两种方法(支持V8引擎)
2024年08月04日
JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
2024年08月04日
两周从爬虫小白变大神 _yjs_js_security_passport
2024年08月04日
JS笔记(对象、函数、数组)
2024年08月04日
Markdown.js:强大的纯JavaScript Markdown解析器
2024年08月04日
Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。
2024年08月04日
vue 父组件怎么获取子组件里面的data数据
2024年08月04日
VUE
个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)
2024年08月04日
el-table 表格封装并改造实现单元格可编辑
2024年08月04日
none
nodejs环境下创建vue项目、SSH密钥登陆!!!
2024年08月04日
vue+quill+element-ui实现视频、图片上传及缩放保姆级教程,轻松使用富文本
2024年08月04日
【three.js】22. Imported Models导入模型
2024年08月04日