gpt4 book ai didi

javascript - 为什么 React 组件在渲染时启动 onClick 事件,而不是在单击时启动?

转载 作者:行者123 更新时间:2023-11-29 16:54:18 25 4
gpt4 key购买 nike

我有一个像这样的 React 组件:

import React, { Component, PropTypes } from 'react';
import SubnavActions from '../../actions/subnav-actions';
import FeedActions from '../../actions/feed-actions';

export default class SubnavItemModule extends Component {

render() {

return (

<div className={'item ' + this.props.active} thumbImg={this.props.thumbImg} _text={this.props._text} _id={this.props._id} onClick={this.handler}>
<p>{this.props._text}</p>
</div>
);
}

handler() {

console.log('subnav-filter-item-module handler launching');
}
};

onClick{this.handler} 以前可以工作,但现在它会在每次渲染组件时启动 onClick 事件。

如果我点击它,什么也不会发生。

在其他演示中,我成功地使用了 onClick={ e => this.handler(e)},但在这个工作中没有任何反应。

在此之前,我开始使用 Babel 6 和 Babelify,但我在这里无法真正理解是什么原因造成的。早些时候我使用了 Reactify。所以我的问题如下:

  • 在这里启动 onClick 事件的正确方法是什么?
  • 为什么它在渲染时启动?
  • 这与 Babelify/Reactify 相关吗?如果是,怎么做?

编辑:

更正了原始代码示例。

这是父模块:

http://pastebin.com/rSKf4wR8

如果您想知道我为什么要这样写(使用 import 而不是 require),我正在更改语法。如果你问为什么,好吧,我不知道。我只是试着按照一些教程,看看别人是怎么写的。我什至不知道 require 和 import 之间的区别。

此外,我刚刚意识到一件事。这可能是因为我没有将任何函数作为 prop 传递给父级吗?

有人对 Rails 应用程序有类似的问题,这是否提供了更多信息:React rails app not executing onClick handler when props are used in a conditional expression

最佳答案

在您的情况下,您调用 函数,但您需要传递给onClick 函数的引用

onClick={ this.handler }

Example

如果您需要将一些参数传递给处理程序,您可以使用 .bind,就像这样

onClick={ this.handler.bind(this, 100) }

handler(x) {}

Example

或者使用箭头函数

onClick={ () => this.handler(100) }

关于javascript - 为什么 React 组件在渲染时启动 onClick 事件,而不是在单击时启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33573174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com