useRef()

useRef()可以用来绑定元素节点和保存变量

import React, { useRef, useState } from 'react'

export default function UseRef() {
    const index = useRef(0)
    const myRef = useRef()
    const [val, setVal] = useState(0)
    // const te = myRef.current.value
    return (
        <div>
            {/* 点击按钮后,控制台输出增加,但页面上的显示并未变化 */}
            {/* 在使用useState后,点击按钮调用setValue触发页面渲染,index的值也更新了 */}
            {/* 说明useRef可以存储变量,不会因为页面的渲染而重新赋值为0 */}
            {/* 将ref绑在元素节点上可以获得到对应的DOM元素 */}
            index:{index.current}<br />value:{val}<br />
            <input id='ipt' ref={myRef} type={'text'} />
            <button onClick={() => {
                index.current++
                setVal(myRef.current.value)
                console.log(index.current)
                console.log('输入框的值:', myRef.current.value)
                myRef.current.value = ''

            }}>jia</button>
            {/* {myRef.current.value} */}
            {/* {te} */}

        </div>
    )
}

 

本文转载于网络 如有侵权请联系删除

相关文章

  • 2021年SpringBoot面试题30道「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。文章目录前言面试题系列文章传送门SpringBoot面试题内容1.谈谈你对SpringBoot的理解?2.为什么需要SpringBoot?3.说出SpringBoot的优点4.SpringBoot的核心配置文件有哪几个?它们的区别是什么?5.SpringBoot的配置文件有哪几种格式?它们有什么区别?6.开启SpringBoot特性有哪几种方式?7.什么是SpringBootStarter?8.SpringBoot有哪几种读取配置的方式?9.SpringBoot支持哪些日志框架?推荐和默认的日志框架是哪个?10.SpringBoot可以兼容老Spring项目吗?11.保护SpringBoot应用有哪些方法?12.什么是JavaConfig?13.(SpringBoot的核心注解是哪个?它主要由哪几个注解组成的)介绍一下@SpringBootApplication注解14.SpringBoot自动配置原理是什么?15.你如何理解SpringBoot配置加载顺序?16.SpringBoot支持哪些嵌入式Web容器?17.什么是YAML?18.YAML

  • js 箭头函数详解

    1.认识箭头函数es6新增了使用胖箭头(=>)语法定义函数表达式的能力,很大程度上,箭头函数实例化的函数对象与正式的函数表达式创建的函数对象行为是相同的。任何可以使用函数表达式的地方,都可以使用箭头函数://普通函数 letsum=function(a,b){ returna+b; } //箭头函数 letsum1=(a,b)=>{ returna+b; }复制箭头函数简洁的语法对开发者来说是十分友好的,从上面的例子可以得知箭头函数的简单用法:(参数)=>{函数体}2.箭头函数的一些用法3.省略包含参数的小括号如果只有一个参数,那也可以不用括号。只有没有参数,或者多个参数的情况下,才需要使用括号://有效 letsum=(x)=>{ returnx; }; //有效 letsum1=x=>{ returnx; }; //没有参数需要括号 letsum2=()=>{ return1; }; //有多个参数需要括号 letsum3=(a,b)=>{ returna+b; };复制4.省略包含函数体的大括号箭头函数也可以不用大括号,但这样会改变函数

  • 国密解决方案专场推介会 | 华南篇

    点击上方蓝字关注我们2021年5月13日,由腾讯云DNSPOD、云鼎实验室、亚洲诚信(TrustAsia)联合举办的【国密解决方案专场推介会|华南篇】在深圳圆满举行。推介会现场图本场推介会主题深入贯彻中央有关精神文件和《网络安全法》,以“关键信息基础设施安全必须全面应用密码技术来保障”的前提开展,腾讯云DNSPod产品中心总监吴洪声以及SSL证书产品经理、亚洲诚信国密产品专家、云鼎实验室数据安全产品专家等重要嘉宾共同出席本次推介会,与华南区业界精英共同探讨如何发掘政企金融大客户的需求、应用痛点,定制化输出专业国密解决方案,共话国密产业技术发展广阔前景。左右滑动可查看更多现场图 推介会现场,腾讯云SSL证书产品经理赵晶着重为来宾们介绍了国密(SM2)证书的重要性以及腾讯云政企国密解决方案,并提出“双轨制”方案的思路,即web服务端同时部署国际标准与国密标准双证书,来进行相关应用的落地,并做了现场演示架构效果和数据分享。他表示:其实DNSPod很早就在进行国密方案的布局,至今已收获较好的成绩。在整体解决方案尚属公测期的时候,我们和亚洲诚信进行了金融、教育、政务等行业国密方案的咨询落地。根据

  • LeetCode MySQL 1225. 报告系统状态的连续日期(date_sub + over)

    文章目录1.题目2.解题1.题目Table:Failed+--------------+---------+ |ColumnName|Type| +--------------+---------+ |fail_date|date| +--------------+---------+ 该表主键为fail_date。 该表包含失败任务的天数.复制Table:Succeeded+--------------+---------+ |ColumnName|Type| +--------------+---------+ |success_date|date| +--------------+---------+ 该表主键为success_date。 该表包含成功任务的天数.复制系统每天运行一个任务。每个任务都独立于先前的任务。 任务的状态可以是失败或是成功。编写一个SQL查询2019-01-01到2019-12-31期间任务连续同状态period_state的起止日期(start_date和end_date)。 即如果任务失败了,就是失败状态的起止日期,如果任务成功了,就是成功状态的起止日

  • 漫画:美团面试题(面试时,面试官给了我一块巧克力。。)

    今天是小浩算法“365刷题计划”第76天。这次小浩又出去面试,虽然面试官没让他修电暖气,但却给了他一块巧克力。。。(题目由读者在美团面试后提供)01PART巧克力巧克力的凹槽是干嘛用的?大量的凹槽设计增加了巧克力的接触面积,可以使巧克力快速的凝固,并且保证凝固均匀。试想一下,如果是把巧克力放入平整的没有凹槽的方形盒子中,是不是凝固后很难取下来呢。面试题:小浩出去面试时,面试官掏出一块10×10个小块的巧克力。首先,面试官把巧克力掰成两大块,并且吃掉其中一块,把另一块交给小浩。小浩再把剩下的巧克力掰成两大块,吃掉其中一块,把另一块交回给面试官。两个人就这样无聊且枯燥的掰呀掰。。。规定:谁没办法往下继续掰,谁就输了。如果面试官先开始掰的话,面试官和小浩谁有必胜策略?(面试官输了,小浩将赢得面试)(找到这个魔幻的图,看的我饿了)02PART题目分析原题由读者venus提供,小浩在其基础上改编而成。作为聪明机智的小浩(没见过这么夸自己的),最后当然是小浩获胜。获胜的方法:只要小浩一直保持巧克力是正方形就可以了。刚开始,巧克力是10×10的,长这样:不管面试官咋掰,最后都会掰成一个长宽不相等的正

  • 数据结构与数据类型的区别,联系,本质?

    前言数据结构与数据类型相信我们并不陌生,在日常开发中天天都能接触到,但如果要让你解释一下它们的本质区别和联系,你是否能准确的描述呢?为了便于更加清晰的理解概念,我们应该先理解每一个简单的术语,然后在去理解它们组合后的术语意义。什么是数据数据是指未经过处理的原始记录,是关于事件之一组离散且客观的事实描述,是构成消息和知识的原始材料。一般而言,数据缺乏组织及分类,无法明确的表达事物代表的意义,它可能是一堆的杂志、一大叠的报纸、数种的开会记录或是整本病人的病历纪录。什么是结构结构是指在一个系统或者材料之中,互相关联的元素的排列、组织。结构按类别可分为等级结构(有层次地排列,由上至下,一对多)、网络结构(多对多)、晶格结构(临近的个体互相连接)等。什么是数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合,简单的说是计算机中存储、组织数据的方式。其包括逻辑结构和物理结构。逻辑结构逻辑结构是指数据元素之间的逻辑关系,独立于数据在计算机的存储方式,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。逻辑结构又分为:线性结构:(有且只有一个开始结点和一个终端结点,并且所有结点都最多只有

  • J2EE复习

    JAVA 学习路线图1.基础知识   ArrayList与LinkedList区别:  ArrayList数据结构是数组 LinkedList底层数据结构是链表(双向链表) TreeMap是红黑树实现的HashMap和HashTable的区别:两者都实现了Map接口,是将唯一键映射到特定的值上,主要区别在于:   1.HashMap没有排序,允许一个NULL键和多个NULL值,而Hashtable不允许 2.HashMap把HashTable的contains方法去掉了,改成containsvalue和containskey,因为contains方法容易让人引起误解; 3.Hashtable继承自Dictionary类,HashMap是Java1.2引进的Map接口的实现;  4.Hashtable的方法是synchronized的,而HashMap不是,在多个县城访问HashTable时,不需要自己为 它的方法实现同步,而HashMap就必须为之提供同步.HashTable和HashMap采用的hash/rehash算法一致,所以性能不会有很大的差异. HashMap和HashT

  • php学习之html属性-框架(八)

    普通框架语法:<frameset>  //划分用的<frame>    //显示用的<frame>…….<noframe>直接显示的描述文字</noframe>  //描述</frameset>目的:框架就是对当前页面进行分割,划分成每个小窗口,每个小窗口显示不同的页面作用:用于后台的制作,前台不再推荐使用,兼容性不好注意:如果是框架结果的网页,不能有body,而且他的文档头是frameset的,而不是普通文档头DOCTYPE框架的文档头<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Frameset//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="zh-cn">复制frameset的属性:rows:跨行划分  

  • 详解zookeeper的配置文件

    zoo.cfg配置文件分析tickTime=2000 zookeeper中最小的时间单位长度(ms)initLimit=10 follower节点启动后与leader节点完成数据同步的时间syncLimit=5leader节点和follower节点进行心跳检测的最大延时时间dataDir=/tmp/zookeeper 表示zookeeper服务器存储快照文件的目录dataLogDir 表示配置zookeeper事务日志的存储路径,默认指定在dataDir目录下 clientPort 表示客户端和服务端建立连接的端口号:2181zookeeper中的一些概念数据模型zookeeper的数据模型和文件系统类似,每一个节点称为:znode. 是zookeeper中的最小数据单元。每一个znode上都可以保存数据和挂载子节点。从而构成一个层次化的属性结构节点特性持久化节点:节点创建后会一直存在zookeeper服务器上,直到主动删除持久化有序节点:每个节点都会为它的一级子节点维护一个顺序临时节点:临时节点的生命周期和客户端的会话保持一致。当客户端会话失效,该节点自动清理临时有序节点:在临时节点

  • Oracle 12cR2中的ADG会话保留特性

    Oracle12cR2中有一个不错的特性,那就是ActiveDataGuard会话保留,原本的叫法是PreservingActiveDataGuardApplicationConnections怎么理解呢,比如在ActiveDataGuard上的连接会话,在switchover的过程中会话连接会始终保持不会中断。这一点听起来就很有特点,能够提高用户体验度,而且是一种相对透明的方式。到底怎么样呢,我们来简单测试一下,先看看默认情况下的ADG会话情况,切换的过程就直接使用DGBroker来做了,快。这是一个12cR2的环境,也使用了FarSync。 DGMGRL>showconfiguration Configuration-dg_test12cs ProtectionMode:MaxPerformance Members: test12cs-Primarydatabase test_sync-Farsyncinstance test12css-Physicalstandbydatabase Fast-StartFailover:DISABLED ConfigurationStatu

  • Java 动手写爬虫: 一、实现一个最简单爬虫

    第一篇准备写个爬虫,可以怎么搞?使用场景先定义一个最简单的使用场景,给你一个url,把这个url中指定的内容爬下来,然后停止一个待爬去的网址(有个地方指定爬的网址)如何获取指定的内容(可以配置规则来获取指定的内容)设计&实现1.基本数据结构CrawlMeta.java一个配置项,包含塞入的url和获取规则/** *Createdbyyihuion2017/6/27. */ @ToString publicclassCrawlMeta{ /** *待爬去的网址 */ @Getter @Setter privateStringurl; /** *获取指定内容的规则,因为一个网页中,你可能获取多个不同的内容,所以放在集合中 */ @Setter privateSet<String>selectorRules; //这么做的目的就是为了防止NPE,也就是说支持不指定选择规则 publicSet<String>getSelectorRules(){ returnselectorRules!=null?selectorRules:newHashSet<

  • 在计算机设置打印机单页打印机打印颜色

    1、单击计算机左下角图标—设备和打印机—右键单击默认出现的打印机—打印首选项—选择打印数量及颜色及纸张来源(现在选择的是纸盒1)—点击确定即可

  • LeetCode 【困难】数据库-第1336(超困难):每次访问的交易次数

    题目 数据 CREATETABLEVisits( user_idINT, visit_dateDATE); CREATETABLETransactions1( user_idINT, transaction_dateDATE, amountINT); INSERTINTOVisitsVALUE(1,'2020-01-01'),(2,'2020-01-02'), (12,'2020-01-01'),(19,'2020-01-03'), (1,'2020-01-02'),(2,'2020-01-03'), (1,'2020-01-04'),(7,'2020-01-11'), (9,'2020-01-25'),(8,'2020-01-28'); INSERTINTOTransactions1VALUE(1,'2020-01-02',120),(2,'2020-01-03',22), (7,'2020-01-11',232),(1,'2020-01-04',7), (9,'2020-01-25',33),(9,'2020-01-25',66), (8,'2020-01-28',1),(

  • 小程序监听数组长度是否为0

    小程序动态监听选中checkbox的集合是否为空, Array.isArray(this.state.checkedList) && this.state.checkedList.length === 0?"数组长度不为0":"数组长度为0"案例如下: 在Taro中的写法: <ViewclassName={(Array.isArray(this.state.checkedList)&&this.state.checkedList.length===0)||this.state.textAreaCon.length==0?'findOpcityBtn':'findBtn'}> <AtButtonclassName='atbutton'onClick={this.handleSubmit}>提交评价</AtButton> </View>复制  

  • 个人项目-猜数字

    项目 内容 所属课程 18级安卓方向软件工程 作业简介 使用源码管理工具对猜数字小游戏开发进行源码管理 作业要求 个人项目(零):猜数字 作业目的 熟悉Git、码云的基本使用方法以及回顾Java的基本语法 参考资料 https://jingyan.baidu.com/article/358570f6727bb7ce4724fc88.html 学生姓名 汪鑫 代码仓库 https://gitee.com/wang-xin2/guess-the-numbers 描述完成任务过程中遇到的困难、问题以及这些困难和问题哪些已经解决了,哪些尚未解决,已经解决的困难和问题是如何解决的 git、java代码不熟练,通过请教同学已解决 描述通过这个作业学习到了什么 学到了码云的基本使用

  • 分布式事务参考

    参考:http://www.cnblogs.com/zengkefu/p/5742617.html   事务消息+最终一致性。是一个不错的方案: 基于消息中间件的两阶段提交往往用在高并发场景下,将一个分布式事务拆成一个消息事务(A系统的本地操作+发消息)+B系统的本地操作,其中B系统的操作由消息驱动,只要消息事务成功,那么A操作一定成功,消息也一定发出来了,这时候B会收到消息去执行本地操作,如果本地操作失败,消息会重投,直到B操作成功,这样就变相地实现了A与B的分布式事务。 JTA原理与实现分析,参考:https://www.ibm.com/developerworks/cn/java/j-lo-jta/index.html

  • iview 表格数据加载及表格内容编辑应用

    本次应用效果如  点击“修改”触发表格行编辑:  编辑行各单元格内容,完毕后点击保存按钮更新编辑内容至表格数据源。  对行单元格的编辑通过公用方法 renderTableColumn来渲染,若需对单元格做验证则需要再次扩展。  renderTableColumn的代码如下:其中,editName是待编辑单元格临时存储变量的字符串,columnName是当前单元格对应的key renderTableColumn(editName,columnName,h,{row,index}){ letedit if(this.editTableIndex===index){ this[editName]=row[columnName] edit=[h('Input',{ props:{ value:row[columnName] }, on:{ input:(val)=>{ this[editName]=val } } })] }else{ edit=row[columnName] } returnh('div',[edit]) },复

  • SQLSERVER还原数据库失败:错误: 3154

    以还原test数据库为例。 2 首先启动SQLServer2008软件,展开左侧目录树,在【数据库】节点上右键点击,弹出右键菜单,如图所示 3 选择【还原文件和文件组(E)...】功能,弹出的【还原文件和文件组】对话框,在还原目标中的【目标数据库(Q)】一栏填入数据库名称,这里填入test,在还原的源中选择【源设备】,点击右侧红色框中的按钮,如图所示 4 在弹出的【指定备份】对话框中选择【添加】按钮,弹出【选择文件】对话框,选择数据库备份的位置,选中后点击确认,在【指定备份】对话框中就会显示数据库备份列表,选择想要恢复的数据库备份,点击确定即开始数据库恢复,如图所示  

  • mybatis复杂sql查询——多对一和一对多处理

    mybatis复杂sql查询——多对一和一对多处理 sforeverd 于2021-04-2516:17:44发布 180收藏分类专栏:mybatis文章标签:sqlmysqlmybatis版权 mybatis专栏收录该内容6篇文章0订阅订阅专栏以学生表(Student)和教师表(Teacher)为例:其中tid为外键约束   多对一处理按查询嵌套处理(相当于sql中的子查询)思路:1.查询所有的学生信息2.根据查询出来的学生信息中的tid,查找教师信息:子查询 /***查询学生信息以及对应的老师信息*@return*/publicList<Student>getStudentInfo(); /***获取学生表tid列名对应的教师信息*@paramid每个学生对应的教师编号*@return*/publicTeachergetTeacher(intid);12345678910111213<resultMapid="StudentTeacher"type="Student"><!--复杂的属性需要单独进行处理association:对象collec

  • 读Qt Demo&mdash;&mdash;Basic Layouts Example

    此例程主要展示用代码方式创建控件并用Layout管理类对其进行布局;例程来自Qt5.2,如过是默认安装,代码位于:C:\Qt\Qt5.2.0\5.2.0\mingw48_32\examples\widgets\layouts\basiclayouts涉及类:QDialogQPushbottonQGroupBoxQLabelQLineEditQComboBoxQTextEditQHBoxLayoutQVBoxLayoutQFormLayoutQGridLayoutQMenuQMenuBar main.cpp#include<QApplication> #include"dialog.h" intmain(intargc,char*argv[]) { QApplicationapp(argc,argv); Dialogdialog; dialog.show(); returnapp.exec(); }复制   dialog.h #ifndefDIALOG_H #defineDIALOG_H #include<QDialog>

  • 常用网址收藏

    1.布局框架: Bootstrap: http://getbootstrap.com/ Foundation: http://foundation.zurb.com/ Uikit: http://www.getuikit.com/ WebComponents:http://css-tricks.com/modular-future-web-components// 2.构建工具及包管理器: Grunt: http://gruntjs.com/ Yeoman: http://yeoman.io/ Bower: http://bower.io/ NPM: https://www.npmjs.org/ 3.代码优化: GoogleClosureCompiler: CSSLint: http://csslint.net/ JSHint: http://www.jshint.com/ JSLint: http://www.jslint.com/ 4.CSS预处理器 Less: http:

相关推荐

推荐阅读