首页IT科技react函数组件父子组件传值(react组件中方法调用)

react函数组件父子组件传值(react组件中方法调用)

时间2025-09-16 23:03:44分类IT科技浏览7219
导读: 我们在初学react时(有vue等其他基础 ,我们在方法调用的时候通常是 方法名( ...

  我们在初学react时(有vue等其他基础)                   ,我们在方法调用的时候通常是 方法名()

例如:

这样调用的话你会发现点击并不能使之触发事件                          ,但是触发了重新渲染(修改state中的值)          ,在控制台却发现输出了两次:测试点击

若我们写成这样<button onClick={this.handleClick}>点击</button> 发现并没有什么问题                   。

但是在javaScript中若我们声明一个函数               ,调用的时候都是函数名()

例如:

var aa = (data=) => { console.log(这是箭头函数:,data)} aa() aa(测试)

这是我个人猜测:

在react中                          ,jsx语法通过babel解析成浏览器可以识别的语法               ,它在解析时可能默认的给每一个方法加上()—自调用

例如:onClick={this.handleClick()} ->onClick={(this.handleClick())()} ---这样比如会报错this.handleClick(...) is not a function(有可能babel解析时又加了() )

这样比如:<button onClick={ (() => { console.log(模拟问题:,data)})()}>模拟问题</button>

我们可以拿jax语法中调用函数与javaScript比较

//React代码 import React from react export default class Login extends React.Component{ state = { name:login } handleClick = () => { return () => { console.log(测试点击) } } render() { return ( <div>这是login组件{this.state.name} <button onClick={ this.handleClick()}>模拟问题2</button> </div> ) } } //Javascript代码 var lee = () => { return () => { console.log(这是jacaScript测试)}} lee()()

我们可以通过测试得到在babel编辑后的jsx语法中this.handleClick() ==lee()() 的调用

此上都是我个人的猜测

声明:本站所有文章          ,如无特殊说明或标注                          ,均为本站原创发布                          。任何个人或组织                   ,在未征得本站同意时     ,禁止复制                  、盗用                             、采集        、发布本站内容到任何网站             、书籍等各类媒体平台          。如若本站内容侵犯了原著者的合法权益                           ,可联系我们进行处理               。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
百度快照劫持问题探析(原因、解决方法和预防措施) mac10.14支持机型(macOS 10.13允许任何来源没有了怎么办?macOS 10.13允许任何来源没了开启步骤)