React之组件实例的三大属性之rel

news/2024/11/20 21:36:56/

文章目录

  • ref
  • 实例
    • 字符串形式
    • 回调函数形式
    • createRef

ref

组件内的标签可以定义属性来标识定义自己,有三种方式来进行定义。下面通过一个实例分别介绍

实例

做两个输入框,左边点击按钮有弹窗,右边输出后点击别处页面会有弹窗。

字符串形式

这种形式十分方便,操作起来速度快,但是react不推荐

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="test"></div><script src="../js/react.development.js"></script><script src="../js/react-dom.development.js"></script><script src="../js/babel.min.js"></script><script src="../js/prop-types.js"></script><script type="text/babel">class Demo extends React.Component {showData = () => {const {input1} = this.refsalert(this.refs.input1.value)alert(input1.value + "aaa")}showData2 = () => {const {input2} = this.refsalert(input2.value)}render() {return (<div><input ref="input1" type="text" placeholder="点击按钮提示数据"/>&nbsp;<button onClick={this.showData}>点我提示左侧的数据</button>&nbsp;<input ref="input2" onBlur={this.showData2} type="text" placeholder="失去焦点提示数据"/>&nbsp;</div>)}}ReactDOM.render(<Demo/>, document.getElementById("test"))</script>
</body>
</html>

运行结果:
左侧输入后点击按钮出弹窗
在这里插入图片描述
右侧输入后点击其他处出弹窗
在这里插入图片描述

回调函数形式

这种方法也比较方便,比字符形式好点。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="test"></div><script src="../js/react.development.js"></script><script src="../js/react-dom.development.js"></script><script src="../js/babel.min.js"></script><script src="../js/prop-types.js"></script><script type="text/babel">class Demo extends React.Component {showData = () => {const {input1} = thisalert(input1.value)}showData2 = () => {const {input2} = thisalert(input2.value)}//内联函数的写法和类绑定函数的写法没什么区别的render() {return (<div><input ref={c => this.input1 = c} type="text" placeholder="点击按钮提示数据"/>&nbsp;<button onClick={this.showData}>点我提示左侧的数据</button>&nbsp;<input onBlur={this.showData2} ref={c => this.input2 = c} type="text" placeholder="失去焦点提示数据"/>&nbsp;</div>)}}ReactDOM.render(<Demo/>, document.getElementById("test"))</script>
</body>
</html>

输出结果和上面一样

createRef

这种方式好像比较麻烦,但是react推荐这种方法

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="test"></div><script src="../js/react.development.js"></script><script src="../js/react-dom.development.js"></script><script src="../js/babel.min.js"></script><script src="../js/prop-types.js"></script><script type="text/babel">class Demo extends React.Component {// React.createRef调用后可以返回一个容器,该容器可以存储被ref所标识的节点myRef = React.createRef()myRef2 = React.createRef()showData = () => {alert(this.myRef.current.value)}showData2 = () => {alert(this.myRef2.current.value)}//内联函数的写法和类绑定函数的写法没什么区别的render() {return (<div><input ref={this.myRef} type="text" placeholder="点击按钮提示数据"/>&nbsp;<button onClick={this.showData}>点我提示左侧的数据</button>&nbsp;<input onBlur={this.showData2} ref={this.myRef2} type="text" placeholder="失去焦点提示数据"/>&nbsp;</div>)}}ReactDOM.render(<Demo/>, document.getElementById("test"))</script>
</body>
</html>

输出结果和上面一样


http://www.ppmy.cn/news/579045.html

相关文章

九号公司遭红杉小米顺为减持:半年共套现6.5亿元

雷递网 雷建平 1月15日 九号有限公司&#xff08;证券代码&#xff1a;689009&#xff09;日前公布主要股东减持进展。 本次减持存托凭证计划实施前&#xff0c;九号公司存托凭证持有人 Sequoia Capital China GF Holdco III&#xff0d;A,Ltd.&#xff08;简称&#xff1a;Seq…

小米耗时3年花200万换的新logo,太值了!!!

和大家八卦小米新logo之前&#xff0c;先给大家看看网上流程甚广的一张照片&#xff1a; 可能很多朋友认识不全&#xff0c;其中大佬很多。 李斌、李想、何小鹏、王传福、王兴、沈南鹏、程维、余凯、鲁伟鼎&#xff0c;这场聚会几乎集齐了中国智能电动车的半壁江山。 这是雷军发…

【React】React全家桶(二)组件+组件三大核心属性state-props-refs+事件处理与条件渲染+列表与表单+状态提升与组合+高阶函数与函数+函数柯里化

文章目录 1 组件1.1 函数组件1.2 类式组件 2 组件三大核心属性state-props-refs2.1 state2.1.1 关于state的理解2.1.2 类式组件中的使用state 2.2 props2.2.1 关于props的理解2.2.2 类式组件中使用 props2.2.3 函数式组件使用props2.2.4 props和state的区别 2.3 refs2.3.1 关于…

小米618预售来袭,米家智能跑步机新品上市

5月23日&#xff0c;米家智能跑步机正式发布&#xff0c;米家智能跑步机是小米首款全跑道设计的家用跑步机&#xff0c;其特色之处就是更宽敞的全跑道以及4%固定坡度设计&#xff0c;最高速可达15km/h&#xff0c;整机轻薄可折叠&#xff0c;升级智能化运动体验&#xff0c;是家…

jquery快速学习笔记

使用jQuery的优点&#xff1a; 简化DOM操作&#xff1a;jQuery提供了简洁的语法和强大的选择器&#xff0c;使得DOM操作变得更加简单和直观。您可以使用链式调用来操作元素&#xff0c;减少了重复的代码。 跨浏览器兼容性&#xff1a;jQuery封装了许多常见的跨浏览器问题&…

SE-ResNet介绍

一&#xff0c;SE&#xff1a;Squeeze-and-Excitation的缩写&#xff0c;特征压缩与激发的意思。 可以把SENet看成是channel-wise的attention&#xff0c;可以嵌入到含有skip-connections的模块中&#xff0c;ResNet,VGG,Inception等等。 二&#xff0c;SE实现的过程 1.Squeez…

SE_Day01

day01 File类 File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径) 使用File可以做到: 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等2:创建和删除文件或目录3:访问一个目录中的子项 但是File不能访问文件数据. …

SE-Networks

SENet是ImageNet 2017&#xff08;ImageNet收官赛&#xff09;的冠军模型&#xff0c;和ResNet的出现类似&#xff0c;都在很大程度上减小了之前模型的错误率&#xff08;具体见附录&#xff09;&#xff0c;并且复杂度低&#xff0c;新增参数和计算量小。下面就来具体介绍一些…