これは#87に関連していますが、より技術的です。 現在ネストされたドラッグソースは一緒にアクティブになります。 これは非常に、非常に間違った動作です。 子ドラッグソースは、親がアクティブ化するのを_常に_防止する必要があります。
ただし、HTML5バックエンドの場合ほど単純ではありません。
e.stopPropagation()
をdragstart
ハンドラーに追加しようとしましたが、別の問題があります。 List
とCard
が両方ともドラッグソースであり、 Card
がList
内部にあるとします。 Card
にcanDrag(): false
ます。 この場合、 stopPropagation()
を呼び出すことはできません。これは、イベントが親に到達するのを妨げるためです。
では、代わりにif (DragOperationStore.isDragging()) return;
をdragstart
ハンドラーに追加しましょう。 ただし、別の問題があります。イベントが親に到達した場合でも、実際にドラッグすると、ブラウザは元の(子)ターゲットをドラッグプレビューとして使用します。
これは、 beginDrag
で指定されていない場合、 this.getDOMNode()
をdragPreview
this.getDOMNode()
として明示的に使用することでおそらく解決できるため、ドラッグプレビューが現在のターゲットであることが保証されます。 まだ試していません。 いずれにせよ、これは複雑な問題のようには思われず、手に入れることができます!
確かに、dragPreviewにはいくつかの制約が必要です
どのような?
0.9.2で修正されました。
ライブデモ: http ://gaearon.github.io/react-dnd/#/nesting -sources
canDrag
関数がfalse
返したときに、親の呼び出しを停止する解決策はありますか?
最も参考になるコメント
canDrag
関数がfalse
返したときに、親の呼び出しを停止する解決策はありますか?