ReactJS - 05 - ReactJS之入门之03之事件 Event 处理
一、事件处理代码(写法一):
<script type="text/babel">
class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = { isToggleOn: true };
}
//使用箭头函数使当前的 this 对象绑定进函数中。
handleClick = () => {
this.setState({
isToggleOn: !this.state.isToggleOn
});
}
render() {
return (
<button onClick={ this.handleClick }>
{this.state.isToggleOn ? 'ON' : 'OFF'}
</button>
);
}
}
ReactDOM.render(
<Toggle />,
document.getElementById('example')
);
</script>
二、事件处理代码(写法二):
<script type="text/babel">
//
//
// 1. 如果 handleClick 不是箭头函数(即:具有单独的this 作用域),
// 2. 则需要绑定当前的 this 对象给 handleClick 函数
//
//
class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = {isToggleOn: true};
//2. 则需要绑定当前的 this 对象给 handleClick 函数
this.handleClick = this.handleClick.bind(this);
}
// 1. 如果 handleClick 不是箭头函数(即:具有单独的this 作用域),
handleClick() {
this.setState({
isToggleOn: !this.state.isToggleOn
});
}
render() {
return (
<button onClick={this.handleClick}>
{this.state.isToggleOn ? 'ON' : 'OFF'}
</button>
);
}
}
ReactDOM.render(
<Toggle />,
document.getElementById('example')
);
</script>
三、事件处理代码(写法三):
当需要向 onClick 函数传递参数时,需要以下写法:
创建一个新的 arrow 回调函数,以绑定 this,并传参。
注意:
使用本写法有个问题就是每次 Toggle 渲染的时候都会创建一个新的回调函数。
如果不向 onClick 函数 传参,请避免使用本写法。
1、组件内部:传参
<button onClick={(e) => this.deleteRow(id, e)}>Delete Row</button>
<button onClick={this.deleteRow.bind(this, id)}>Delete Row</button>
参数 e 作为 React 事件对象将会被作为第二个参数进行传递。
deleteRow(id, e){ //事件对象e要放在最后
e.preventDefault();
alert(id);
}
2、组件嵌套:props 传参
function Square(props) {
return (
<button className="square"
onClick={props.onClick}>
{props.value}
</button>
);
}
class Board extends React.Component {
renderSquare(i) {
return (
// 创建一个新的 arrow 回调函数,以绑定 this,并传参。
<Square value={this.props.squares[i]}
onClick={() => this.props.onClick(i)}
/>
);
}
render() {
return (
<div>
<div className="board-row">
{this.renderSquare(0)}
{this.renderSquare(1)}
{this.renderSquare(2)}
</div>
</div>
);
}
}
3、例子
<script type="text/babel">
class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = {isToggleOn: true};
}
// 1. 如果 handleClick 不是箭头函数(即:具有单独的this 作用域),
handleClick() {
this.setState({
isToggleOn: !this.state.isToggleOn
});
}
render() {
return (
//2. 在这里写一个新的箭头函数,把当前的 this 对象绑定进去,并传参。
// 注意:这里没有传参,请使用上面的两种写法。
<button onClick={ () => { this.handleClick() }}>
{ this.state.isToggleOn ? 'ON' : 'OFF' }
</button>
);
}
}
ReactDOM.render(
<Toggle />,
document.getElementById('example')
);
</script>
引用:
https://reactjs.org/docs/handling-events.html
在线演示
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2429536
-
分享到:
相关推荐
`event-source-polyfill`的工作原理是,它监听`XMLHttpRequest`或`fetch`的完成事件,然后模拟EventSource的API,将接收到的数据分发给客户端。通过这种方式,即使在没有原生EventSource支持的环境下,开发者也可以...
hystrix-metrics-event-stream-1.5.18.jarhystrix-metrics-event-stream-1.5.18.jar
React提供事件处理机制,将DOM事件与JavaScript函数关联起来。例如,`onClick`和`onTouchStart`/`onTouchEnd`事件可以用来处理轮播图的点击和滑动。 6. **Infinite Scrolling(无限循环)**:为了提供更好的用户...
ReactJS提供了内建的事件处理机制,允许我们在组件的函数中处理这些事件。例如,通过`onClick`事件,我们可以增加或减少配料的数量。 4. 路由(Routing):如果项目规模扩大,可能需要考虑页面间的导航。React ...
### Event-B入门基础手册知识点概览 #### 一、Event-B简介与背景 - **定义**:Event-B是一种形式化的方法,主要用于系统建模与设计,特别强调在软件工程领域中的应用。它提供了一套完整的工具和技术来支持系统的...
3. 表单处理:掌握如何处理表单提交和输入事件,如`onChange`、`onSubmit`,以及如何使用`event.preventDefault()`来阻止默认表单行为。 4. 控制式组件和非控制式组件:对比两种表单组件的实现方式,并了解何时选择...
赠送jar包:shiro-event-1.4.0.jar; 赠送原API文档:shiro-event-1.4.0-javadoc.jar; 赠送源代码:shiro-event-1.4.0-sources.jar; 赠送Maven依赖信息文件:shiro-event-1.4.0.pom; 包含翻译后的API文档:shiro-...
赠送jar包:shiro-event-1.4.0.jar; 赠送原API文档:shiro-event-1.4.0-javadoc.jar; 赠送源代码:shiro-event-1.4.0-sources.jar; 赠送Maven依赖信息文件:shiro-event-1.4.0.pom; 包含翻译后的API文档:shiro-...
在这个重构过程中,我们还需要为事件处理函数添加类型。例如,`increment`函数的类型可以被定义为`(event: React.MouseEvent) => void`。 在实际项目中,`reactjs-refactoring-classes-ts-master`这个压缩包可能...
device-mapper-event-libs-1.02.74-10.el6.i686.rpm
4. **提交处理**:当用户点击登录按钮时,使用`event.preventDefault()`防止页面刷新,然后调用处理登录请求的函数。此函数应向后端发送POST请求,携带用户名和密码。 5. **错误处理**:如果登录失败,应该显示错误...
与传统的B方法相比,Event-B通过引入事件和不变量等概念,更加侧重于系统的动态行为分析,从而能够更好地支持系统的逐步精化和验证过程。 #### 二、Event-B的特点 1. **逐步精化(Refinement)**: Event-B的核心...
Material-UI 是一个 CSS 框架和一组实现规范的组件。 查看我们的以获取实时... React点击事件插件一些组件使用react-tap-event-plugin来监听触摸事件。 这种依赖是暂时的,一旦 react v1.0 发布就会消失。 在此之前,
docker离线安装所需包,需要的拿去吧
通过这样的方式,"event-emitter-mixin"使得在前端开发中处理事件变得更加方便和灵活。它简化了事件管理的代码,提高了代码的可读性和可维护性,同时也降低了因事件处理不当导致的错误。在实际项目中,合理利用这种...
### Event-B 学习入门详解 #### 一、书籍概览与系统建模设计 《Event-B学习入门》是一本由肯·罗宾逊编写的关于Event-B的入门书籍,首次发布于2007年7月,并在2010年10月进行了最后一次更新。本书主要介绍了如何...
总结来说,"event-collector-1.12.zip"是一个专注于事件收集的开源项目,它提供了强大的数据收集和处理能力,适用于多种IT场景。通过理解和掌握这个项目,开发者可以提升自己在数据处理领域的专业技能,同时也能为...
在JavaScript编程语言中,事件处理是其核心特性之一,它允许网页对用户的操作或浏览器的行为做出响应。事件处理的核心在于`Event`对象,这个对象包含了与事件相关的信息,如事件类型、触发事件的元素等。下面我们将...