React-dnd: Corrija as fontes de arrasto aninhadas e como elas funcionam com canDrag

Criado em 27 fev. 2015  ·  4Comentários  ·  Fonte: react-dnd/react-dnd

Isso está relacionado ao # 87, mas é mais técnico. As fontes de arrastar aninhadas atualmente serão ativadas juntas. Este é um comportamento muito, muito errado. A fonte de arrastar filho deve _sempre_ impedir a ativação do pai.

Mas não é tão simples quanto parece com o back-end HTML5.

Tentei adicionar e.stopPropagation() em dragstart manipulador, mas há outro problema. Suponha que List e Card sejam fontes de arrasto, Card estão dentro de List . Suponha que Card tenha canDrag(): false . Não podemos chamar stopPropagation() neste caso, porque isso impediria o evento de chegar ao pai.

Ok, vamos adicionar if (DragOperationStore.isDragging()) return; ao manipulador de dragstart . Mas há outro problema: embora o evento agora tenha alcançado o pai, se você realmente arrastar, o navegador usará o destino original (filho) como visualização do arrasto.

Isso provavelmente pode ser resolvido usando this.getDOMNode() explicitamente como dragPreview se não for especificado em beginDrag , de modo que a visualização do arrasto seja garantida como o alvo atual. Eu não tentei ainda. De qualquer forma, isso não parece ser um problema complexo e está à disposição!

bug up for grabs

Comentários muito úteis

Existe uma solução para parar de chamar o pai quando a função canDrag retornar false ?

Todos 4 comentários

Certamente, precisamos de algumas restrições no dragPreview

Como o quê?

Corrigido em 0.9.2.
Demonstração ao vivo: http://gaearon.github.io/react-dnd/#/nesting -sources

Existe uma solução para parar de chamar o pai quando a função canDrag retornar false ?

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Okami92 picture Okami92  ·  3Comentários

antoineBernard picture antoineBernard  ·  3Comentários

redochka picture redochka  ·  3Comentários

gocreating picture gocreating  ·  4Comentários

user1736 picture user1736  ·  3Comentários