React技术栈-组件三大属性之refs与事件处理
React技术栈-组件三大属性之refs与事件处理
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.组件的refs属性概述
组件内的标签都可以定义ref属性来标识自己<input type="text" ref={input => this.msgInput = input}/>
回调函数在组件初始化渲染完或卸载时自动调用
在组件中可以通过this.msgInput来得到对应的真实DOM元素
作用:
通过ref获取组件内容特定标签对象, 进行读取其相关数据
二.refs实战案例
1>.HTML源代码
<!DOCTYPE html><html>
<head>
<meta charset="UTF-8">
<title>组件三大属性之refs</title>
</head>
<body>
<div ></div>
</body>
<script type="text/javascript" src="../js/react.development.js"></script>
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<script type="text/javascript" src="../js/prop-types.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>
<script type="text/babel">
//1>.定义组件
class MyComponent extends React.Component{
/**
*
* 温馨提示:
* 组件内置的方法中的this为组件对象
* 在组件类中自定义的方法中this为null
* 强制绑定this: 通过函数对象的bind()
* 箭头函数(ES6模块化编码时才能使用)
*
*/
constructor(props){
super(props);
this.showInput = this.showInput.bind(this);
this.handleBlur = this.handleBlur.bind(this);
}
//编写回调函数
showInput(){
const input = this.refs.content;
alert(this.input.value);
}
/*
* 编写事件处理函数
* 通过onXxx属性指定组件的事件处理函数(注意大小写)
* React使用的是自定义(合成)事件, 而不是使用的原生DOM事件
* React中的事件是通过事件委托方式处理的(委托给组件最外层的元素)
* 通过event.target得到发生事件的DOM元素对象,下面的案例"event.target"返回的就是"input"对象。
*
*/
handleBlur(event){
alert(event.target.value);
}
render(){
return(
/*
* 组件中只能返回一个标签,因此我们将所有的标签用div套起来返回
*
* 下面第一个input标签的ref说明如下:
* 使用一个回调函数(本例中也称为箭头函数)将当前的input标签绑定到组件对象("this.input")上
*
*/
<div >
<input type="text" ref={input => this.input = input}/>
<button onClick={this.showInput}>提示输入</button>
<input type="text" placeholder="失去焦点的提示内容" onBlur={this.handleBlur}/>
</div>
)
}
}
//2>.渲染组件标签
ReactDOM.render(<MyComponent />,document.getElementById("box1"))
</script>
</html>
2>.浏览器打开以上代码渲染结果
在第二个对话框输入内容,移出焦点后也会弹如下图所示的对话框。
以上是 React技术栈-组件三大属性之refs与事件处理 的全部内容, 来源链接: utcz.com/z/383543.html