Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Blazor API de JavaScript Blazor.registerCustomEventType agora gera um erro quando o nome do evento personalizado corresponde à opção browserEventName. Registar um evento personalizado com o mesmo nome do evento subjacente do navegador fazia com que o evento disparasse duas vezes por cada ação do utilizador.
Versão introduzida
.NET 11
Comportamento anterior
Anteriormente, podia invocar Blazor.registerCustomEventType com um eventName igual à opção browserEventName. A chamada teve sucesso silenciosamente, mas cada evento do navegador com esse nome causava duas invocações EventCallback no lado .NET: uma para o evento nativo do navegador e outra para o wrapper de evento personalizado que relançava o mesmo nome.
// This used to silently double-fire the event.
Blazor.registerCustomEventType('scrolltop', {
browserEventName: 'scrolltop'
});
Novo comportamento
A partir de ASP.NET Core 11, Blazor.registerCustomEventType lança quando eventName é igual a options.browserEventName:
// This now throws synchronously.
Blazor.registerCustomEventType('scrolltop', {
browserEventName: 'scrolltop'
});
Para envolver um evento de navegador num evento personalizado sem a colisão, dê ao evento personalizado um nome diferente:
Blazor.registerCustomEventType('customscroll', {
browserEventName: 'scrolltop'
});
Tipo de mudança disruptiva
Esta alteração é de natureza comportamental .
Motivo da mudança
Dar a Blazor.registerCustomEventType o mesmo nome tanto para eventos personalizados como para eventos do navegador era quase sempre um erro, que provocava um acionamento duplo incorreto sem dar qualquer aviso. A nova validação revela o erro no momento do registo. Para mais informações, veja dotnet/aspnetcore#64774.
Ação recomendada
Se o seu código chamar Blazor.registerCustomEventType com um nome personalizado igual ao evento subjacente do navegador, renomeie o evento personalizado para qualquer outro nome (uma convenção comum é adicionar um prefixo como custom ou o nome da sua biblioteca de componentes):
Blazor.registerCustomEventType('lib-scroll', {
browserEventName: 'scrolltop'
});
Depois atualiza o atributo correspondente [EventHandler] ou a diretiva @on* no lado .NET para usar o novo nome.
APIs afetadas
Nenhum.
Blazor.registerCustomEventType é um API de JavaScript; não é apresentado através do modelo de objetos .NET. Para mais informações, consulte eventos personalizados em Blazor.