【发布时间】:2015-09-17 16:50:06
【问题描述】:
我正在尝试在使用 react+flux 的电子应用程序中显示播放列表。 由于某种原因,我无法将点击处理程序附加到每个播放列表项。
这是我的代码:
var Playlist = React.createClass({
render: function() {
var list = this.props.list;
var playlist = [];
for (var i = 0; i < list.length; ++i) {
playlist.push(
<PlaylistItem song={list[i]} key={i} />
);
}
return (
<ul className='playlist'>
{playlist}
</ul>
)
}
});
var PlaylistItem = React.createClass({
_play: function() {
console.log(this.props.song);
},
render: function() {
var song = this.props.song;
return (
<li>
<div className='playBtn'>
<i className='fa fa-play' onClick={this._play}>
</i>
</div>
<div className='info'>
<div className='artist'>{song.artist}</div>
<div className='title'>{song.title}</div>
</div>
<div className='rmBtn'>
<i className='fa fa-minus-circle'>
</i>
</div>
<div className='time'>{song.time}</div>
</li>
);
}
});
我不明白为什么点击处理程序永远不会触发。我希望当单击 i 元素时,我会将歌曲对象发送到控制台。
谢谢。
编辑:我对此进行了一些试验,每次我从商店获取数据(甚至是假数据)时,点击处理程序都不起作用。但是如果我将假数据移动到根组件中,点击处理程序就可以正常工作。
我已多次检查数组中的对象是否相同。
我不明白为什么会发生这种行为。
有人吗?
【问题讨论】:
-
对我来说似乎工作正常,这是一个小提琴jsfiddle.net/5758b33y。你确实有字体很棒的东西已经在运行了吗?
-
是的,看起来一切正常,我只是没有让任何点击处理程序在 PlaylistItem 中工作。
-
在我上面的小提琴中,当我单击播放图标时,我在控制台中收到一条消息,这看起来就像你正在尝试做的那样。你不明白吗?
-
我可以确认 noveyak 所说的,一切正常。
-
你找到答案了吗?我也有同样的问题!
标签: javascript reactjs electron