采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,请问下:onClick={ } 为什么中括号内必须写成 onClick={ ()=> addToCart() } ? 我的理解是addToCart已经是一个function了,按理来说,直接onClick= { addToCart() }就可以执行了? 为什么要加箭头函数呢? 麻烦阿莱克斯老师解析一下吗?? 感谢感谢。
onClick里要传入的是一个函数的表达式,而不是一个调用函数的指令,因为onClick的作用是注册一个点击事件的处理函数(假设这个函数叫handle)。是在点击事件发生后,这个被注册的函数才会被调用,这时候才会有handle()执行。也就是说:
onClick={ handle } // 点击的时候执行 handle() onClick = {() => addToCart()} // 点击的时候执行 (()=>addToCart())(),其中 ()=>addToCart()是个匿名函数 //所以如果点击事件绑定的处理函数没有参数,也可以写成这样 onClick = {addToCart} // 点击的时候执行 addToCart()
谢谢,意思是onClick={ addToCart() } 也是正确的?
不是,onClick={ addToCart() }是错误的,onClick = {() => addToCart()}是正确的,但如果addToCart函数没有参数,那onClick={ addToCart }也是正确的。 如果你用了onClick={ addToCart() },那addToCart()将会在页面第一次渲染的时候执行一次,之后无论你点击还是怎么样都不会再执行了,因为addToCart()没有返回一个函数,所以addToCart()()是没有意义的。你在TS的项目中用onClick={ addToCart() }编译器甚至会报错。 我觉得你可能需要补充一下基础的JavaScript函数、函数调用、DOM以及事件绑定的概念: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Building_blocks/Events https://developer.mozilla.org/en-US/docs/Web/Events/Event_handlers
感谢,但是还是不太明白个中原因,我去查下其他资料。😬
登录后可查看更多问答,登录/注册
React18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能
684 5
862 10
729 2
1.8k 2
844 1