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

目录
  • React控制元素显示隐藏的方法
    • 方法一
    • 方法二
    • 方法三
  • React切换显示和隐藏
  • 总结

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

React控制元素显示和隐藏的方法目前我知道的有三种方法:

  • 第一种是通过state变量来控制是否渲染元素,类似vue中的v-if。
  • 第二种是通过style控制display属性,类似vue 中的v-show。
  • 第三种是通过动态切换className。

方法一

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

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元素,保证了安全性。

React切换显示和隐藏

{radioChange >= 0 &&
          <div>
            {radioChange === 0 ? (
              <div className={style.template} key="1">
                <div className={style.inline}>如果金额超过</div>
                <Input className={style.input} label=" " id="free_price" rules={['required']}
                  msg={this.msg} style={{ width: '100px', display: 'inlinbe-block' }} />
                <div className={style.inline}>元,免运费,否则按照公里数收取,每公里</div>
                <Input className={style.input} label=" " id="unit_price" rules={['required']}
                  msg={this.msg} style={{ width: '100px', display: 'inlinbe-block' }} />
                <div className={style.inline}>元,最多不超过</div>
                <Input className={style.input} label=" " id="max_price" rules={['required']}
                  msg={this.msg} style={{ width: '100px', display: 'inlinbe-block' }} />
                <div className={style.inline}>元</div>
              </div>
            )
             : (
               <div className={style.template} key="2">
                 <div className={style.inline}>如果金额超过</div>
                 <Input className={style.input} label=" " id="free_price" rules={['required']}
                   msg={this.msg} style={{ width: '100px', display: 'inlinbe-block' }} />
                 <div className={style.inline}>元,免运费,否则一口价</div>
                 <Input className={style.input} label=" " id="price" rules={['required']}
                   msg={this.msg} style={{ width: '100px', display: 'inlinbe-block' }} />
                 <div className={style.inline}>元</div>
               </div>)

            }
          </div>

如上面代码显示,如果通过一个数值控制,显示和隐藏切换的话,必须加入一个key值,否则在切换的时候活报错,应该是在页面渲染的时候会重复利用这个元素,如果加入keys,渲染的时候,不会产生复用

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 一起来学习React元素的创建和渲染

    目录 React和ReactDOM React初体验 创建React元素 JSX JSX初体验 总结 React 是一个用于构建用户界面的 JavaScript 库 它包括两个库:react.js 和 react-dom.js react.js:React 的核心库,提供了 React.js 的核心功能,比如创建 React 组件.组件的生命周期等 react-dom.js:提供了和浏览器交互的 DOM 功能,比如:将组件渲染到页面上 React 和 ReactDOM 我们可以通过官方提供的 C

  • 浅谈React中的元素、组件、实例和节点

    React 深入系列,深入讲解了React中的重点概念.特性和模式等,旨在帮助大家加深对React的理解,以及在项目中更加灵活地使用React. React 中的元素.组件.实例和节点,是React中关系密切的4个概念,也是很容易让React 初学者迷惑的4个概念.现在,老干部就来详细地介绍这4个概念,以及它们之间的联系和区别,满足喜欢咬文嚼字.刨根问底的同学(老干部就是其中一员)的好奇心. 元素 (Element) React 元素其实就是一个简单JavaScript对象,一个React 元素

  • 关于React动态修改元素样式的三种方式

    目录 React动态修改元素样式 1.借助ref动态修改样式 2.通过动态控制状态的变化修改元素的样式(两种方式) 3.通过在DOM中使用JS代码(三元运算符) React样式冲突问题 css-样式私有化 cssModules-维持类名 css modules-最佳实践 React动态修改元素样式 React动态修改元素样式常用的方式有两种:借助ref和通过动态控制状态的变化修改元素的样式 1.借助ref动态修改样式 在需要修改样式的元素上添加ref <div className='scroll

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

    目录 React控制元素显示隐藏的方法 方法一 方法二 方法三 React切换显示和隐藏 总结 React控制元素显示隐藏的方法 React控制元素显示和隐藏的方法目前我知道的有三种方法: 第一种是通过state变量来控制是否渲染元素,类似vue中的v-if. 第二种是通过style控制display属性,类似vue 中的v-show. 第三种是通过动态切换className. 方法一 第一种方法是通过此例中showElem变量来控制是否加载元素的,如果showElem为false,内容是直接不

  • jQuery控制TR显示隐藏的几种方法

    网上有很多,这里介绍三种: 第一种方法,就是使用id,这个方法可以在生成html的时候动态设置tr的id,也是用得最多最简单的一种,如下: 这行不隐藏 这行要隐藏 这行要隐藏 那么控制显隐可以直接使用 for(var i = 1; i < tr_len; i++){ //tr_len是要控制的tr个数 $("#tr_"+i).hide(); } 第二种方法,是使用$.each(),这个方法需要设置table的id,如下: 这行不隐藏 这行要隐藏 这行要隐藏 那么控制显隐可以直接使

  • 使用vue控制元素显示隐藏方式

    目录 vue控制元素显示隐藏 解释 注意点 控制元素显示隐藏 v-show与v-if,以及v-if-else v-show与v-if作用 vue控制元素显示隐藏 HTML代码:  <div title="意向价格"   v-if="showPrise"></div>   <div title="意向租金"   v-show="showRentPrise"></div> JS代码:

  • 解决EditText不显示光标的三种方法(总结)

    解决方法有以下3种 1.在Edittext中加入以下属性 android:cursorVisible="true" android:textCursorDrawable="@null" 2.在Edittext中加入以下属性 android:cursorVisible="true" android:textCursorDrawable="@drawable/test_cursor" 对应的drawable文件 <?xml

  • python读取并显示图片的三种方法(opencv、matplotlib、PIL库)

    前言 在进行图像处理时,经常会用到读取图片并显示出来这样的操作,所以本文总结了python中读取并显示图片的3种方式,分别基于opencv.matplotlib.PIL库实现,并给出了示例代码,介绍如下. OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux.Windows.Android和Mac OS操作系统上. 它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成,同时提供了Python.Ruby.MATLAB等语言的接口

  • 关于C++中定义比较函数的三种方法小结

    C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必须要知道集合中的对象,那个在前那个在后.因此,学会如何定义比较方法是非常重要的. C++模板库的许多容器需要相关类型有序,例如set<T> 和priority_queue<T>. 这篇文章旨在告诉大家如何为一个类定义一个排序方法,以便在STL容器或者方法中使用. 作为一个C++程序员,

  • react+django清除浏览器缓存的几种方法小结

    一. meta方法 打包好的入口index.html头部加入 <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="0&

  • selenium判断元素是否存在的两种方法小结

    在selenium中没有对应的方法,需要自己去写. 元素存在,但不唯一,操作元素会报错 元素不存在,操作元素也会报错 第一种:捕获异常 弊端:只要页面上有元素,不几个,都返回True from selenium import webdriver import unittest class Test1(unittest.TestCase): # 一.准备浏览器驱动.网站地址 # setUp在每个测试函数运行前运行,注意大小写:self不能省略 def setUp(self): self.drive

  • Python 循环终止语句的三种方法小结

    在Python循环终止语句有三种: 1.break break用于退出本层循环 示例如下: while True: print "123" break print "456" 2.continue continue为退出本次循环,继续下次循环 示例如下: while True: print "123" continue print "456" 3.自定义标记 Tag 自已定义一个标记为True或False 示例代码: Tag

  • Python实现矩阵相乘的三种方法小结

    问题描述 分别实现矩阵相乘的3种算法,比较三种算法在矩阵大小分别为22∗2222∗22, 23∗2323∗23, 24∗2424∗24, 25∗2525∗25, 26∗2626∗26, 27∗2727∗27, 28∗2828∗28, 29∗2929∗29时的运行时间与MATLAB自带的矩阵相乘的运行时间,绘制时间对比图. 解题方法 本文采用了以下方法进行求值:矩阵计算法.定义法.分治法和Strassen方法.这里我们使用Matlab以及Python对这个问题进行处理,比较两种语言在一样的条件下,

随机推荐