React组件三大属性之 refs
React组件三大属性之 refs
refs属性
1) 组件内的标签都可以定义ref属性来标识自己
a. <input type="text" ref={input => this.msgInput = input}/>
b. 回调函数在组件初始化渲染完或卸载时自动调用
2) 在组件中可以通过this.msgInput来得到对应的真实DOM元素
3) 作用: 通过ref获取组件内容特定标签对象, 进行读取其相关数据
事件处理
1) 通过onXxx属性指定组件的事件处理函数(注意大小写)
a. React使用的是自定义(合成)事件, 而不是使用的原生DOM事件
b. React中的事件是通过事件委托方式处理的(委托给组件最外层的元素)
2) 通过event.target得到发生事件的DOM元素对象
<input onFocus={this.handleClick}/>
handleFocus(event) {
event.target //返回input对象
}
强烈注意
1) 组件内置的方法中的this为组件对象
2) 在组件类中自定义的方法中this为null
a. 强制绑定this: 通过函数对象的bind()
b. 箭头函数(ES6模块化编码时才能使用)
例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <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> </head> <body> <div id="test"></div> <script type="text/babel"> /* 需求: 自定义组件, 功能说明如下: 1. 界面如果页面所示 2. 点击按钮, 提示第一个输入框中的值 3. 当第2个输入框失去焦点时, 提示这个输入框中的值 */ //1、定义组件 class MyComponent extends React.Component { constructor(props) { super(props) // 调用父类(Component)的构造函数 // 将自定义的函数强制绑定为组件对象 this.handleClick = this.handleClick.bind(this) // 将返回函数中的this强制绑定为指定的对象, 并没有改变原来的函数中的this this.handleBlur = this.handleBlur.bind(this) // 将返回函数中的this强制绑定为指定的对象, 并没有改变原来的函数中的this } handleClick(){ //官方不建议这么写 const input = this.refs.content alert(input.value) //建议这么搞 alert(this.x.value) } handleBlur(event){ alert(event.target.value) } render() { return ( <div> <input type="text" ref="content"/>{' '} <input type="text" ref={x => this.x = x}/>{' '} <button onClick={this.handleClick}>提示输入数据</button>{' '} <input type="text" placeholder="失去焦点提示数据" onBlur={this.handleBlur}/> </div> ) } } //2、渲染组件标签 ReactDOM.render(<MyComponent/>,document.getElementById('test')) </script> </body> </html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-03-18 YARN学习总结之架构
2019-03-18 HDFS读写流程
2019-03-18 HDFS学习总结之API交互