【问题标题】:Why is onClick being called on render?为什么在渲染时调用 onClick?
【发布时间】:2017-05-17 10:09:35
【问题描述】:
import React, { Component } from 'react';

class Bookmark extends Component {
  constructor(props) {
    super(props);

    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    console.log(this.props.idt);
  };

  render() {
    return (
      <div className='bookmark' onClick={this.handleClick()}/>
    );
  }
}
export default Bookmark;

这是我的代码。我已经绑定了这个函数,但它仍然在渲染时被调用。这也是他们在 React 文档中的做法:https://facebook.github.io/react/docs/handling-events.html

只有当我这样做时它才有效:

<div className='bookmark' onClick={() => this.handleClick()}/>

只有当我点击按钮时才会调用handleClick。

【问题讨论】:

  • 这也可以。&lt;div className='bookmark' onClick={this.handleClick}/&gt;

标签: javascript reactjs


【解决方案1】:

因为您传递的是方法调用而不是方法本身。

改成

<div className='bookmark' onClick={this.handleClick}/>

【讨论】:

  • 谢谢。甚至没有注意到 ().
  • 我是 JS 新手,所以我的问题是:为什么方法调用仍然被调用? onClick 没有被触发,所以不应该调用方法调用,对吗?
猜你喜欢
  • 2016-03-17
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多