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.
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.
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.