javascript - onClick 在渲染时调用

标签 javascript reactjs

当我的应用程序呈现时,我的 onClick 事件中包含的函数被无故调用。我查看了其他一些帖子并实现了他们的建议,但没有成功。

我的函数

login = () => {
        this.props.login();
    };

标签内的 onClick 事件

<a style={{cursor: 'pointer'}} onClick={ () => this.login }> Log In </a>

最佳答案

您需要像这样传递您的 lambda:

<a style={{cursor: 'pointer'}} onClick={ () => this.login() }> Log In</a>

注意括号。正如您现在拥有的那样,该函数会在脚本运行/您的组件呈现时自动调用。

还值得注意的是,使用 JSX lambda 可能会导致性能问题,因为它会在每次渲染时创建一个新函数。您可以改为执行以下操作以防止生成新函数。

class MyComp extends React.Component {
  constructor(props) {
    super(props);
    this.login = this.login.bind(this);
  }

  public function login(event) {
    // do something
  }

  render() {
    return(
      <a onClick={this.login}>Log In</a>
    );  
  }

}

关于javascript - onClick 在渲染时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52861147/

相关文章:

javascript - 如何使lightslider jquery插件在reactjs组件中工作?

javascript - React-native android WebView 在加载前处理点击的 Url

javascript - 如何立即设置日期的日期?

javascript - javascript 中的函数按一一顺序同时工作

Javascript接口(interface)/松耦合

javascript - 用于 JS 文件的类似 Styleint 的 Gulp 插件

javascript - 状态应该是嵌套的还是扁平的

reactjs - 测试自定义 Hook : Invariant Violation: could not find react-redux context value; please ensure the component is wrapped in a <Provider>

javascript - 无法将表隐藏在 asp.net 中

javascript - 使用 jquery 搜索并替换为变量