React-dnd: O tipo de aceitação useDrop DropTargetHookSpec deve incluir um tipo de função

Criado em 20 ago. 2020  ·  3Comentários  ·  Fonte: react-dnd/react-dnd

Descreva o erro
Sua documentação do useDrop diz que o membro do objeto de especificação accept é "Uma string, um símbolo ES6, uma matriz de qualquer um ou uma função que retorna qualquer um desses, dados adereços do componente.".
Mas no código , accept é definido como TargetType , que é string | symbol ou uma matriz desses.

Comportamento esperado
accept deve ser um tipo onde uma função que retorna TargetType seja possível.

Contexto adicional
Eu quero atualizar accept dinamicamente. Eu pensei que isso seria possível alterando o accept de useDrop mas isso não funciona. Atualmente, não vejo como fazer isso de outra forma e não consigo encontrar o comportamento que a documentação descreve.

Comentários muito úteis

Eu sei que essa não é uma solução ideal, mas até que isso seja resolvido e possamos ter funções de produção de tipo de destino, uma solução alternativa seria usar uma propriedade key igual aos seus tipos aceitos no componente que contém seu soltar alvo. Isso garantiria que ele voltasse a ser montado assim que você alterasse o(s) tipo(s) aceitável(is). Acabei de me deparar com esse problema exato hoje.

Todos 3 comentários

Eu sei que essa não é uma solução ideal, mas até que isso seja resolvido e possamos ter funções de produção de tipo de destino, uma solução alternativa seria usar uma propriedade key igual aos seus tipos aceitos no componente que contém seu soltar alvo. Isso garantiria que ele voltasse a ser montado assim que você alterasse o(s) tipo(s) aceitável(is). Acabei de me deparar com esse problema exato hoje.

Eu notei isso também, mas contornei usando canDrop .

Eu sei que essa não é uma solução ideal, mas até que isso seja resolvido e possamos ter funções de produção de tipo de destino, uma solução alternativa seria usar uma propriedade key igual aos seus tipos aceitos no componente que contém seu soltar alvo. Isso garantiria que ele voltasse a ser montado assim que você alterasse o(s) tipo(s) aceitável(is). Acabei de me deparar com esse problema exato hoje.

Apenas para ecoar este comentário: eu tive uma situação em que eu tinha um ternário que estava renderizando duas versões do mesmo componente com base em um booleano. Clever reagir percebeu que eles são o mesmo componente, mas com adereços diferentes. Embora eu tenha tentado usar esse ternário para renderizá-los como nós independentes que montam/desmontam com base no booleano, na verdade ele estava renderizando novamente em vez de remontar. Assim, o accept foi baseado nos adereços originais, não nos novos, e useDrop não é atualizado com base nessa alteração de prop.

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