ReactでonClickをネストにしたいっ!
2020年2月12日
やりたいことをコードで書いてみたけど、これ何の為に必要なのかよくわからんなw
render (
<a onClick={e=>{
console.log('parent!!');
}}>
外側
<span onClick={e=>{
console.log('child!!');
}}>
内側
</span>
</a>
);
もう少し実用的に書くなら
<ul>
<li onClick={}>
<span onClick={}>(1)</span>
ひとつめ
</li>
<li onClick={}>
<span onClick={}>(2)</span>
ふたつめ
</li>
<li onClick={}>
<span onClick={}>(3)</span>
みっつめ
</li>
</ul>
こんな感じで、li全体がクリックできて、中の(1)をクリックした時は別の挙動みたいなやつを作りたい時に、何が問題かというと、(1)をクリックした時にliのクリックも発生する。
jQueryで言うところの.clickでreturn false;する処理をやりたい。
解決方法
<li onClick={}>
<span onClick={e=>{
// ここで処理
e.stopPropagation();
}}>
</span>
</li>
この e.stopPropagation(); で、親のonClickイベントを止めれる。