《深入react技术栈》学习笔记(三)漫谈React
前言接下来让我们进入新的章节:漫谈React。 正文一:事件系统1.react的事件系统 2.合成事件 import React,{Component} from 'react' class App extends Component{ handleClick(e,arg){ console.log(e,log); } render(){ return <button onClick={this.handleClick.bind(this,'test')}>Test</button>; } } 3-2构造器内声明(推荐):在组件的构造器内完成对事件的绑定。 class App extends Component{ handleClick(e){ console.log(e); this.handleClick=this.handleClick.bind(this); } render(){ return <button onClick={this.handleClick.bind(this,'test')}>Test</button>; } } 3-3箭头函数:它自动绑定了定义此函数作用域的this。 class App extends Component{ const handleClick= (e)=>{ console.log(e); } render(){ return <button onClick={this.handleClick.bind(this,'test')}>Test</button>; } }或 import React,log); } render(){ return <button onClick={()=>this.handleClick()}>Test</button>; } } 3.原生事件 import React,{Component} from 'react' class nativeEventDemo extends Component{ componentDidMount(){ this.refs.button.addEventListener('click',e=>{ handleClick(e); }) } handleClick(e){ console.log(e); } componentWillUnmount(){ this.refs.button.removeEventListener('click'); } render(){ return <button ref = 'button'>Test</button> } } 注意:在react中使用DOM原生事件时,一定要在组件卸载时手动移除,否则可能出现内存泄漏问题。 4.混合事件 我们无法在组件中将事件绑定到组件范围之外的区域,只能使用原生事件来实现。 但是,尽量在React中混用合成事件和原生DOM事件:用reactEvent.nativeEvent.stopPropagatoin()来阻止事件冒泡是不行的。组织React事件冒泡的行为只适用于React合成系统中,且没办法阻止原生事件冒泡。反之,在原生事件中阻止事件冒泡,却可以阻止React事件的传播。 对于无法使用React的合成事件系统的场景,我们还需要使用原生事件来完成。 二:表单(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |