React条件渲染实例讲解使用

 更新时间:2022年11月01日 16:54:37   作者:-耿瑞-  
在React中,你可以创建不同的组件来封装各种你需要的行为。然后还可以根据应用的状态变化只渲染其中的一部分。React 中的条件渲染和JavaScript中的一致,使用JavaScript操作符if或条件运算符来创建表示当前状态的元素,然后让React根据它们来更新UI

我们先创建一个用于演示条件渲染的组件

import './App.css';
import React from "react";
class App extends React.Component{
  constructor(props){
    super(props);
    this.state = {
      signIn: false
    }
  }
  increase(){
    this.setState({
      signIn: !this.state.signIn
    })
  }
  render(){
    let ligin = this.state.signIn?<span>已登录</span>:<span>未登录</span>
    return (
      <div className="App">
        { ligin }
        <button onClick = { this.increase.bind(this) }>{ this.state.signIn?"取消登录":"登录" }</button>
      </div>
    )
  }
}
export default App;

这里我们模拟了一个登录和未登录的情况

首先 我们在state中定义了一个signIn 这是个布尔类型的变量 比喻成 他为true 表示用户已登录 为false 表示用户还没有登录

然后 我们在render函数中定义了一个ligin变量 他用了三元运算符 这里是在判断 this.state.signIn是不是true

如果为true 则为已登录 否则 是未登录

然后 这个ligin就接受到了结果 然后我们将他插入在我们的页面元素中

运行的效果就是这样

然后我们点一下按钮

因为按钮的点击事件会改变signIn 他的条件改变了 渲染的元素就 不一样了

然后我们的条件判断也可以直接写在页面里

我们在state中再加一个list值

constructor(props){
super(props);
  this.state = {
    signIn: false,
    list: []
  }
}

我们加了一个list变量 他的值是一个空数组

然后我们在render中循环遍历这个list

render(){
  let ligin = this.state.signIn?<span>已登录</span>:<span>未登录</span>
  return (
    <div className="App">
      { ligin }
      <div>
        {
          this.state.list.map((item,index) =>{
            return <p key = {index}>{ item }</p>
          })
        }
      </div>
      <button onClick = { this.increase.bind(this) }>{ this.state.signIn?"取消登录":"登录" }</button>
    </div>
  )
}

但大家或许会发现 我们的数组是没有值的啊

用户一看 你这什么都没有 是不是出问题啦?

这是我们就可以判断 如果数组是空的 给用户一个提示

render(){
 let ligin = this.state.signIn?<span>已登录</span>:<span>未登录</span>
 return (
   <div className="App">
     { ligin }
     {
       this.state.list.length > 0?
       <div>
         {
           this.state.list.map((item,index) =>{
             return <p key = {index}>{ item }</p>
           })
         }
       </div>
       :
       <div>暂无数据....</div>
     }
     <button onClick = { this.increase.bind(this) }>{ this.state.signIn?"取消登录":"登录" }</button>
   </div>
 )
}

我们这里判断this.state.list的长度大于0 我们就循环渲染 如果是0 那就展示提示 暂无数据…

我们代码运行结果如下

到此这篇关于React条件渲染的文章就介绍到这了,更多相关React条件渲染内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • react-router-dom v6版本实现Tabs路由缓存切换功能

    react-router-dom v6版本实现Tabs路由缓存切换功能

    今天有人问我怎么实现React-Router-dom类似标签页缓存,很久以前用的是react-router v5那个比较容易实现,v6变化挺大,但了解react的机制和react-router的机制就容易了,本文介绍react-router-dom v6版本实现Tabs路由缓存切换,感兴趣的朋友一起看看吧
    2023-10-10
  • Redux中subscribe的作用及说明

    Redux中subscribe的作用及说明

    由于redux使用这方面有很多的不解,不是很熟练,所以我查找资料,进行一个总结,希望可以巩固知识,并且能帮助到需要的人,所以我会写的比较清晰简单明了点,若有不对之处,请大家纠正
    2023-10-10
  • React Native 中限制导入某些组件和模块的方法

    React Native 中限制导入某些组件和模块的方法

    这篇文章主要介绍了React Native 中限制导入某些组件和模块的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 一文教你如何避免React中常见的8个错误

    一文教你如何避免React中常见的8个错误

    这篇文章主要来和大家一起分享在 React 开发中常见的一些错误,以及如何避免这些错误,理解这些问题背后的细节,防止犯下类似的错误,需要的可以参考下
    2023-12-12
  • React videojs 实现自定义组件(视频画质/清晰度切换) 的操作代码

    React videojs 实现自定义组件(视频画质/清晰度切换) 的操作代码

    最近使用videojs作为视频处理第三方库,用来对接m3u8视频类型,这里总结一下自定义组件遇到的问题及实现,感兴趣的朋友跟随小编一起看看吧
    2023-08-08
  • 在react中对less实现scoped配置方式

    在react中对less实现scoped配置方式

    这篇文章主要介绍了在react中对less实现scoped配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • React实现原生APP切换效果

    React实现原生APP切换效果

    最近需要使用 Hybrid 的方式开发一 个 APP,交互和原生 APP 相似并且需要 IM 通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常详细,感兴趣的小伙伴跟着小编一起来看看吧
    2025-01-01
  • 浅谈使用React.setState需要注意的三点

    浅谈使用React.setState需要注意的三点

    本篇文章主要介绍了浅谈使用React.setState需要注意的三点,提出了三点对 React 新手来说是很容易忽略的地方,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 详解react中useCallback内部是如何实现的

    详解react中useCallback内部是如何实现的

    前几天有人在问在useCallback函数如果第二个参数为空数组, 为什么拿不到最新的state值,那么这一章就来分析一下useCallback内部是如何实现的,感兴趣的小伙伴跟着小编一起来学习吧
    2023-07-07
  • ReactJs设置css样式的方法

    ReactJs设置css样式的方法

    本篇文章主要介绍了ReactJs设置css样式的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06

最新评论