Ceci est lié au n ° 87 mais plus technique. Les sources de glissement actuellement imbriquées s'activeront ensemble. C'est un comportement très, très faux. La source de glissement enfant doit _toujours_ empêcher le parent de s'activer.
Mais ce n'est pas aussi simple qu'il n'y paraît avec le backend HTML5.
J'ai essayé d'ajouter e.stopPropagation()
dans le gestionnaire dragstart
, mais il y a un autre problème. Supposons que List
et Card
sont tous deux des sources de glissement, Card
est à l'intérieur de List
. Supposons que Card
a canDrag(): false
. Nous ne pouvons pas appeler stopPropagation()
dans ce cas, car cela empêcherait l'événement d'atteindre le parent.
D'accord, ajoutons plutôt if (DragOperationStore.isDragging()) return;
au gestionnaire dragstart
. Mais il y a un autre problème: même si l'événement a maintenant atteint le parent, si vous faites réellement glisser, le navigateur utilisera la cible d'origine (enfant) comme aperçu de glissement.
Cela peut probablement être résolu en utilisant explicitement this.getDOMNode()
comme dragPreview
s'il n'est pas spécifié dans beginDrag
, de sorte que l'aperçu du glissement soit garanti comme la cible actuelle. Je ne l'ai pas encore essayé. Quoi qu'il en soit, cela ne semble pas être un problème complexe, et c'est à gagner!
Certes, nous avons besoin de certaines contraintes sur le dragPreview
Comme quoi?
Corrigé dans la version 0.9.2.
Démo en direct: http://gaearon.github.io/react-dnd/#/nesting -sources
Existe-t-il une solution pour arrêter d'appeler le parent lorsque la fonction canDrag
renvoie false
?
Commentaire le plus utile
Existe-t-il une solution pour arrêter d'appeler le parent lorsque la fonction
canDrag
renvoiefalse
?