React 事件处理
React笔记
React 元素的事件处理和 DOM 元素类似但是有一点语法上的不同:
- React 事件绑定属性的命名采用驼峰式写法, 而不是小写
- 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数, 而不是一个字符串(DOM 元素的写法)
HTML写法
<button onclick="activateLasers()"> 激活按钮 </button>
|
React写法
<button onClick={activateLasers}> 激活按钮 </button>
|
组件渲染一个让用户切换开关状态的按钮eact写法
<body> <div id="example"></div> <script type="text/babel"> class MyNameIsStitch extends React.Component { constructor(props) { super(props); this.state = {isMyNameIsStitch: true};
{} this.handleClick = this.handleClick.bind(this); }
handleClick() { this.setState(prevState => ({ isMyNameIsStitch: !prevState.isMyNameIsStitch })); }
render() { return ( <button onClick={this.handleClick}> {this.state.isMyNameIsStitch ? 'ON' : 'OFF'} </button> ); } }
ReactDOM.render( <MyNameIsStitch />, document.getElementById('example') ); </script> </body>
|
向事件处理程序传递参数
<body> <div id="example"></div> <script type="text/babel"> class MyNameIsStitch extends React.Component { constructor(props) { super(props); this.state = {isMyNameIsStitch: true};
{} this.handleClick = this.handleClick.bind(this); }
handleClick() { this.setState(prevState => ({ isMyNameIsStitch: !prevState.isMyNameIsStitch })); }
render() { return ( <button onClick={this.handleClick}> {this.state.isMyNameIsStitch ? 'ON' : 'OFF'} </button> ); } }
ReactDOM.render( <MyNameIsStitch />, document.getElementById('example') ); </script>
|
没有使用属性初始化器语法, 你可以在回调函数中使用 箭头函数
class MyNameIsStitch extends React.Component { handleClick() { console.log('this is:', this); } render() { {/* 这个语法确保了 `this` 绑定在 handleClick 中 */} return ( <button onClick={(e) => this.handleClick(e)}> 我叫史迪奇 </button> ); } }
|
向事件处理程序传递参数
{/* 参数 e 作为 React 事件对象将会被作为第二个参数进行传递 通过箭头函数的方式, 事件对象必须显式的进行传递, 但bind 的方式, 事件对象以及更多的参数会被隐式的进行传递 bind 方式向监听函数传参 在类组件中定义的监听函数 事件对象 e 要排在所传递参数的后面 */} <button onClick={(e) => this.deleteRow(id, e)}>Delete Row</button> <button onClick={this.deleteRow.bind(this, id)}>Delete Row</button>
|
作者: 我叫史迪奇
本文来自于:
https://sdq3.link/React-event-processing.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议