DOMにli
要素の束を添付するReactコンポーネントがあります。そしてそれらの一部にはクリックイベントリスナーがあります。ユーザーがli
という特殊なものをクリックした後にイベントリスナーを無効にしようとしていますが、event.currentTarget.removeEventListener('click', this.handleMouse) for that
を使用していますが、動作していません。ここでは、コードの関連部分です:コールバックのremoveEventListenerが機能しない
var DisplayList = React.createClass({
[...]
handleMouse: function(event){
event.currentTarget.style.backgroundColor = 'white';
this.props.changeCounts(-1);
event.currentTarget.removeEventListener('click', this.handleMouse); //NOT WORKING
},
[...]
render: function(){
var self = this;
return(
<div id = "listing-boxes-wrapper">
{
this.props.sortedList.map(function(item, index){
if (self.state.changedHabit.indexOf(item.habitid) > -1) {
return <li key={index} style={{backgroundColor: '#ccc'}} className = "text-center" onClick={self.handleMouse}>{item.description}
</li>
}else{
return <li key={index} className =" text-center">{item.description}
</li>
}
})
}
</div>
)
:バックhandleMouse
にthis
を追加しましたが、それでも
私はあなたが古い学校のHTML属性を経由して追加されたイベントのためにremoveEventListenerを使用することができるとは思いません。 addEventListenerを使用してハンドラを適切な方法で追加するだけで、正常に動作するはずです。 – CBroe
@CBroeこれは「古い学校のHTML属性」ではなく、HTMLでさえありません。 – zerkms