Jaa*_*rhu 2 javascript reactjs
我有一个像这样的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');
}
};
Run Code Online (Sandbox Code Playgroud)
onClick {this.handler}以前曾经工作过,但现在每次呈现组件时它都会启动onClick事件.
如果我点击它,没有任何反应.
在其他演示中,我成功地使用了onClick = {e => this.handler(e)},但在这项工作中没有任何反应.
在此之前我开始使用Babel 6和Babelify,但我无法真正理解这是什么原因造成的.早些时候我使用了Reactify.所以我的问题如下:
EDITS:
更正了原始代码示例.
这是父模块:
如果你想知道为什么我的写法不同(使用import而不是require),我正在改变语法.如果你问为什么,好吧,我不知道.我只是尝试按照一些教程,看看别人怎么写.我甚至不知道require和import之间的区别.
而且,我刚刚意识到了什么.这可能是因为我没有在父母那里传递任何作为道具的功能吗?
有人与Rails应用程序有类似的问题,这是否提供更多信息:当条件表达式中使用道具时,React rails app不执行onClick处理程序
在你的情况下你call运作,但你需要传递onClick给函数的引用
onClick={ this.handler }
Run Code Online (Sandbox Code Playgroud)
如果你需要将一些参数传递给处理程序,你可以使用.bind,就像这样
onClick={ this.handler.bind(this, 100) }
handler(x) {}
Run Code Online (Sandbox Code Playgroud)
或者 arrow function
onClick={ () => this.handler(100) }
Run Code Online (Sandbox Code Playgroud)