React控制元素显示隐藏的三种方法

2023-11-04

React控制元素显示和隐藏的方法目前我知道的有三种方法:
第一种是通过state变量来控制是否渲染元素,类似vue中的v-if
第二种是通过style控制display属性,类似vue 中的v-show
第三种是通过动态切换className

方法一:

第一种方法是通过此例中showElem变量来控制是否加载元素的,如果showElemfalse,内容是直接不会渲染的。

class Demo extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            showElem:true
        }
    }
    render(){
        return (
            <div>
                {
                    this.state.showElem?(
                        <div>显示的元素</div>
                    ):null
                }
            </div>
        )
    }
}
方法二:

这个方法很简单,就是通过display属性来控制元素显示和隐藏。

class Demo extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            showElem:'none'
        }
    }
    render(){
        return (
            <div style={{display:this.state.showElem}}>显示的元素</div>
        )
    }
}
方法三:

通过className切换hide来实现元素的显示和隐藏。

class Demo extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            showElem:true
        }
    }
    render(){
        return (
            <div>
                {/* 写法一 */}
                <div className={this.state.showElem?'word-style':'word-style hide'}>显示的元素</div>
                {/* 写法二 */}
                <div className={`${this.state.showElem?'':'hide'} word-style`}>显示的元素</div>
            </div>
        )
    }
}

要注意的是,这几种方法也有使用的区别:

  • 方法一不适合频繁控制显示隐藏的情况,因为他会重新渲染元素,比较耗费性能。在这种情况下,第二种或者第三种通过display来控制会更合理。
  • 方法一适合安全性高的页面,比如用户信息页面,根据不同的用户级别显示不一样的内容,这时候如果你用方法一或者方法二的话,用户如果打开network还是可以看见,因为页面还是渲染了,只是隐藏了而已。而方法一是直接不渲染用户信息的DOM元素,保证了安全性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React控制元素显示隐藏的三种方法 的相关文章

  • 打开对话框时,Material-UI 会向 body 标记添加填充

    我在我的 React 应用程序中使用 Material UI 最近 我将我的软件包更新到了 最新版本 现在 当我在应用程序中打开一个对话框时 padding right 17px 将被添加到 body 标签中 我还检查了 Material
  • 在 React.js 中有条件地设置 html 属性

    我在为 React 中的单选按钮组件设置默认选项时遇到了令人惊讶的困难 这是我的RadioToggle成分 jsx React DOM var RadioToggle React createClass render function va
  • Firebase setDoc() 不创建文档

    我正在使用 auth 创建一个新用户 该用户正在工作 然后使用新创建的 uid 创建一个具有相同内容的新文档 const currentUser await auth createUserWithEmailAndPassword email
  • 如何在React中处理多个路由器

    假设我们有一个网络应用程序 它通常有很多视图 例如索引页面 管理面板 帮助页面 联系人等 我在主index js 中使用react router dom 来处理它们 它工作得很好 但是现在我在开发管理面板时遇到了问题 它是 index js
  • Recoil 中的动态原子键

    我正在尝试创建一个动态表单 其中表单输入字段是根据 API 返回的数据呈现的 由于atom需要有一个唯一的键 我尝试将它包装在一个函数中 但是每次我更新字段值或重新安装组件 尝试更改选项卡 时 我都会收到一条警告 我在这里做了一个小的运行示
  • 需要将mxGraph与react js集成

    是否有任何示例或示例项目解释如何将 mxGraph 与 React js 集成 import React Component from react import PropTypes from prop types import ReactD
  • 监听 redux 动作

    我想创建一个可重用的 redux 表模块 它将存储和更新页码 显示的总页数等 我可以在所有页面之间共享这些模块 但是 我需要更新操作来触发刷新数据操作 该操作将根据页面到达不同的端点 因此 可能类似于页面特定的监听 RefreshData
  • 创建 html 结构,每个 li 中仅允许 3 个 div 元素。在 React + underscore.js 中

    这是以下内容的位副本如何创建每个 li 中仅允许 3 个 div 元素的 html 结构 在 React underscore js 中 https stackoverflow com questions 38008023 how to c
  • 在电子生成器反应电子应用程序后,在 Windows 中出现空白屏幕

    在电子生成器反应电子应用程序后 Windows 中出现空白屏幕 这是package json 在电子生成器反应电子应用程序后 Windows 中出现空白屏幕 name SmallBusinessManagement version 0 1
  • 过滤嵌套的 JSON 对象

    我有一个搜索栏 您可以在其中输入员工姓名 它应该根据过滤器返回姓名 我有一个嵌套的 JSON 对象 如下所示 我需要深入了解该对象以访问数组中的员工姓名 您可以看到我尝试实现的多个选项 它们已被注释掉 我的问题是代码没有过滤名称并返回所有名
  • AWS JS SDK TypeError:STS 不是构造函数

    我有一个 ReactJS 应用程序 它使用 aws sdk 进行认知登录 我用了yarn安装所有模块 但是当我尝试访问 localhost 的网站时 出现 JS 错误 未捕获 承诺中 类型错误 STS 不是构造函数 错误指向该行aws sd
  • React this.state 未定义?

    我正在遵循 Pluralsight 的初学者教程 在表单提交时将值传递给addUser组件方法 我需要将 userName 推送到this state users但我收到错误 App jsx 14 Uncaught TypeError Ca
  • 你如何在react-native中实现捏合缩放?

    我一直在研究 PanResponder 我当前的工作假设是 我将检测是否有两个触摸正在向外移动 如果是 则增加元素大小onPanResponderMove功能 这似乎是一种混乱的方法 有没有更顺畅的方法呢 如果您只需要简单的捏缩放功能 只需
  • React 错误:目标容器不是 DOM 元素

    我刚刚开始使用 React 所以这可能是一个非常简单的错误 但我们开始吧 我的html代码非常简单 load staticfiles
  • React.js:可以在函数组件之外分配 useState() 吗?

    是否有任何语法允许分配useState在功能组件之外 到目前为止我已经尝试过 但没有成功 import React useState useEffect from react import ReactDOM from react dom f
  • React router v6 和路由内页面的相关链接

    您好 我正在尝试使用 React Router 将项目更新到 v6 我了解了基础知识 但在相关链接方面遇到了困难 我们有一个页面 通过 id 呈现给定项目的参考文档 该文档可以使用同级 ID 链接到其他 同级 材料 换句话说 用户可以在文档
  • React中如何触发同级组件的函数?

    I am new to front end world and could not figure out how to trigger a function from a sibling component Lets say I have
  • 我可以选择一种类型的所有 React 组件,而不为每个组件分配一个类吗?

    我这里有一个游乐场 https codesandbox io s 736v9vjzw1 https codesandbox io s 736v9vjzw1 const Something classes children variant g
  • 如何使用 next auth 通过自定义 Spring API 库和端点进行身份验证

    我是 Next js 的新手 正在将我的前端从 React 迁移到 Next v4 我已经使用 Spring 开发了一个后端 它连接到 Azure 上托管的 MySQL 数据库 该 API 在 Postman 和 React 前端上经过全面
  • useParams 钩子在 React 功能组件中返回未定义

    该应用程序显示所有照片

随机推荐

  • apache doris和StarRocks的区别

    Apache Doris是一个分布式的列式存储系统 它的设计目标是提供大规模数据处理的可靠性和高性能 Doris采用了集群方式 通过将数据分布在多个机器上进行处理来提高性能 并提供了SQL查询接口方便用户使用 StarRocks是一个分布式
  • 【Windows10下MySQL(8.0)免费版安装与卸载图文教程】

    WIN10安装MYSQL8 0图文教程 Windows10下MySQL 8 0版本 免费版安装与卸载 一 下载 二 解压 三 创建配置文件以及存放数据的文件夹 四 配置系统环境变量 五 以管理员打开命令窗口 Win键 X键 六 安装 七 连
  • idea access数据库连接_几款好用的数据库,选择适合自己的那盘菜

    先来说一下什么是数据库 通俗讲 它就像物品仓库一样 可以存储电子数据 但是不同的是 它是以一定数据结构进行存储的 用户也可以对其中的数据通过一定的语言方式进行新增 查询 更新 删除等操作 大家接触的比较多的是Excel数据表格 实际它只能称
  • Elasticsearch-head插件安装教程

    目录标题 前言 一 安装node 二 安装Elasticsearch head插件 1 上传压缩包到 opt es路径下去 2 解压安装包 3 192 168 43 10机器修改Gruntfile js 4 192 168 43 10机器修
  • spdk探秘-----块设备开发指导

    这里的块设备是一种存储设备 它支持在固定大小的块中读写数据 这些块通常是512或4096字节 这些设备可能是软件中的逻辑结构 或者对应于像NVMe ssd这样的物理设备 通用库的公共头文件是bdev h 它是与任何类型的块设备交互所需的全部
  • 面经四(多线程的状态)

    援引于线程有哪些状态 每个状态是什么意思 又是如何切换的 线程状态 生命周期 1 新建状态 new 创建线程对象 但是没有交给CPU 也就是没有调用start 方法 只有一个Thread对象 还没有一个真正的线程 每个线程只存在一次新建状态
  • FATFS 0.13 f_mount(&fs,““,1)挂载失败的原因

    这两天学着用了一下FATS文件系统 虽然工作中没用到 但是对个人的经验积累还是有用的 看了一下 代码并不多 但是精简啊 指针跳来跳去的一不小心就晕了 所以也遇到了不少问题啊 这里就讲一下我遇到的第一步就懵逼的问题 那就是 FRESULT f
  • vue其他之“命名规则”

    骆驼式命名法在许多新的函数库和Microsoft Windows这样的环境中使用得相当多 另一方面 下划线法是c出现后开始流行起来的 在许多旧的程序和UNIX这样的环境中 它的使用非常普遍 驼峰式命名法 由一个或多个单词连结在一起 而构成的
  • 攻防世界(adworld) WEB Exercise area(练习区)10题解题思路

    攻防世界 https adworld xctf org cn view source 点右键看源代码被禁止了 要么F12 要么去其他工具中请求就可以了 robots 机器人协议 是规定了爬虫哪些页面可以爬 哪些不可以 robots txt
  • LeetCode每日一题(2444. Count Subarrays With Fixed Bounds)

    You are given an integer array nums and two integers minK and maxK A fixed bound subarray of nums is a subarray that sat
  • [OpenGL] CentOS7 安装 mesa

    CentOS 7安装 mesa How to install mesa on centos 7 1 下载原文件 下载连接 mesa 11 1 3 tar gz freeglut 3 0 0 tar gz libdrm 2 4 66 tar
  • PCB中焊盘和字体整体变透明原因

    之前画PCB时候发现怎么PCB元器件颜色看着很透明 想想看自己也没干什么 怎么变透明了 透明图如下所示 从上图来看是不是焊盘和字体都透明一样 后来发现原来是之前自己看3D时候把颜色改了 切换回2D时候设置为2D透明模式了 如图所示 把这个2
  • 2023年大厂裁员严重,软件测试行业真的饱和了吗?

    这短时间以来后台有很多小伙伴说找工作难 并且说软件测试行业饱和了 竟然登上了热榜 那么我今天带大家看看真实的市场行情 往下看 这个是公司联合某厂的HR招聘真实情况 很明显 软件测试 投简历竟然高达9999 沟通才1千多 说明什么 软件测试
  • 常见的端口服务及漏洞(详细)

    端口 对应的服务 存在的相关漏洞 21 69 ftp tftp 文件传输协议 爆破 嗅探溢出 后门 匿名访问 22 ssh 爆破 openssh漏洞 23 telnet 远程连接 爆破嗅探 25 smtp 邮件服务 弱口令 未授权访问 邮件
  • zookeeper+dubbo+springmvc,搭建

    Dubbo是一个分布式服务框架 在这基础上可以做成分布式计算机网络解决很多高并发或者数据处理量大的问题 二zookeeper又是dubbo的一个重要组件 在此 我借助java语言和springmvc框架介绍如何初步构建一个dubbo服务框架
  • 2023有哪些更好用的网页制作工具

    过去 专业人员使用HTMLL CSS Javascript等代码手动编写和构建网站 现在有越来越多的智能网页制作工具来帮助任何人实现零代码基础 随意建立和设计网站 在本文中 我们将向您介绍2023年流行的网页制作工具 我相信一旦选择了正确的
  • 网络安全技术期末复习——理论部分

    复习 考核 网络安全基本理论知识点 实际设备 网络安全实验 出勤 作业 讨论 课堂练习 11次课的作业完成情况 偏实践和操作 60 综合系统复习 理论考核 时间占三分之一 150分钟 理论就是50 操作100分钟 120分钟 理论40 操作
  • 匀速贝塞尔曲线运动的实现(转)

    二次贝塞尔曲线通常以如下方式构建 给定二维平面上的固定点P0 P1 P2 用B t 表示该条曲线 用一个动画来演示 可以更加清楚的表明这条曲线的构建过程如果t变量本身线形变化的话 这条贝塞尔曲线本身的生成过程是并不是匀速的 通常都是两头快中
  • 解决nodejs版本问题

    下载nvm 1 1 7 管理nodejs版本 下一步进行nodejs 安装 这里注意本人使用nvm1 1 9出现错误发现1 1 7较为好用 nvm use 选择使用版本 npm v 测试nodejs安装是否成功
  • React控制元素显示隐藏的三种方法

    React控制元素显示和隐藏的方法目前我知道的有三种方法 第一种是通过state变量来控制是否渲染元素 类似vue中的v if 第二种是通过style控制display属性 类似vue 中的v show 第三种是通过动态切换classNam