React-dnd: ネストされたドラッグソースとそれらがcanDragでどのように機能するかを修正

作成日 2015年02月27日  ·  4コメント  ·  ソース: react-dnd/react-dnd

これは#87に関連していますが、より技術的です。 現在ネストされたドラッグソースは一緒にアクティブになります。 これは非常に、非常に間違った動作です。 子ドラッグソースは、親がアクティブ化するのを_常に_防止する必要があります。

ただし、HTML5バックエンドの場合ほど単純ではありません。

e.stopPropagation()dragstartハンドラーに追加しようとしましたが、別の問題があります。 ListCardが両方ともドラッグソースであり、 CardList内部にあるとします。 CardcanDrag(): falseます。 この場合、 stopPropagation()を呼び出すことはできません。これは、イベントが親に到達するのを妨げるためです。

では、代わりにif (DragOperationStore.isDragging()) return;dragstartハンドラーに追加しましょう。 ただし、別の問題があります。イベントが親に到達した場合でも、実際にドラッグすると、ブラウザは元の(子)ターゲットをドラッグプレビューとして使用します。

これは、 beginDragで指定されていない場合、 this.getDOMNode()dragPreview this.getDOMNode()として明示的に使用することでおそらく解決できるため、ドラッグプレビューが現在のターゲットであることが保証されます。 まだ試していません。 いずれにせよ、これは複雑な問題のようには思われず、手に入れることができます!

bug up for grabs

最も参考になるコメント

canDrag関数がfalse返したときに、親の呼び出しを停止する解決策はありますか?

全てのコメント4件

確かに、dragPreviewにはいくつかの制約が必要です

どのような?

0.9.2で修正されました。
ライブデモ: http ://gaearon.github.io/react-dnd/#/nesting -sources

canDrag関数がfalse返したときに、親の呼び出しを停止する解決策はありますか?

このページは役に立ちましたか?
0 / 5 - 0 評価