您现在的位置是:网站首页> 编程资料编程资料
React事件处理过程中传参的实现方法_React_
2023-05-24
377人已围观
简介 React事件处理过程中传参的实现方法_React_
摘要
首先我们知道,在React中,是通过小驼峰式给元素绑定事件:
fn = ()=>{ //执行代码 } button onClick={this.fn}>111但是如果有Vue的基础,可以很清楚的看到二者的区别。在Vue中,我们可以直接给fn传递参数。
但是如果在React中我们这么做:
fn = (value)=>{ //执行代码 console.log(value) } button onClick={this.fn('2222')}>111你会发现,在页面加载的时候,2222已经被打印出来了。但是点击按钮的时候并没有效果。
这说明,该方法并没有被绑定在按钮上,而是在按钮加载的时候直接调用了。
而这一点也很好理解,React并没有做向Vue这方面的处理,它是直接调用完,将返回值绑定给了onClick。所以这里我们要记住,事件绑定的时候,一定要绑定的是一个函数。
OK,现在了解了问题所在,如果我想在调用方法的时候传递参数,应该怎么做呢?
1.箭头函数
第一个方法,如果我们在给按钮绑定事件的时候,外层绑定的是一个箭头函数,里面才是我们写的方法,似乎就能完美的解决问题了:
speak = (value) =>{ alert(value) } 通过箭头函数的方式,直接给onClick绑定的就是我们定义的speak方法,并且传递好了参数。
2.函数柯里化
那如果箭头函数可以,似乎我们直接在方法里面返回一个方法,也没有什么问题。
say = (value)=>{ return ()=>{ alert(value) } } 通过这种方式,我们在onClick绑定的时候,可以不用写箭头函数了,比较好看一点。但是原理和刚刚那种方式是一个样子的。
3.bind方法
我们知道,bind方法是改变方法的this指向,并且返回的是一个方法。不会直接调用。
OK,如果bind有这个特性,我们就可以利用它解决这个问题。
loud(value){ alert(value) } 这里可以注意一下,loud方法在定义的时候没有采用箭头函数的方式。而之前的两个方法在定义的时候都使用了箭头函数的方式。
这是因为,在React中,如果定义函数不使用箭头函数,函数里面的this会是绑定事件的元素,而不是React组件。但是如果用bind方法进行事件绑定,就不需要考虑这个问题了。
最后我们总的看一下这三种方式的差别:
export default class Child extends Component { say = (value)=>{ return ()=>{ alert(value) } } speak = (value) =>{ alert(value) } loud(value){ alert(value) } render() { return ( ) } }到此这篇关于React事件处理过程中传参的实现方法的文章就介绍到这了,更多相关React事件处理 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关内容
- React使用ref方法与场景介绍_React_
- JavaScript之instanceof方法手写示例详解_javascript技巧_
- electron-vue+electron-updater实现自动更新(步骤源码)_vue.js_
- vue2中seo时使用vue-meta-info的方法_vue.js_
- Vue路由传递参数与重定向的使用方法总结_vue.js_
- 简单方法实现Vue 无限滚动组件示例_vue.js_
- Vue中动态引入图片要是require的原因解析_vue.js_
- 如何使用TS对axios的进行简单封装_javascript技巧_
- vue3+ts实际开发中该如何优雅书写vue3语法_vue.js_
- vue3子组件如何修改父组件传过来的props数据_vue.js_
