`autoDestroy` makes component destoried before transition end.
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 45/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- react, typescript
- Domínio
- frontend
Direção de pesquisa
Comece pela lógica de renderização do portal em index.tsx e reproduza o comportamento usando o exemplo vinculado do CodeSandbox. Leia PopupInner.tsx e os callbacks do ciclo de vida do CSSMotion para determinar quando a transição de saída termina e como afterVisibleChange é tratado atualmente. Considera-se concluído quando autoDestroy mantém o popup durante a transição e o destrói somente após afterVisibleChange(false).
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
首先看这个示例: https://codesandbox.io/s/cool-tree-2j0rm?file=/src/App.js
没有消失动画,去掉autoDestroy就有了。
其实都是和 https://github.com/ant-design/ant-design/issues/28151 这个有关的。
总而言之,就是没有正确实现afterVisibleChange。
destroy应该在完全消失动画结束后的,也就是afterVisibleChange(false)的时候。
看index.tsx中这段代码:
let portal: React.ReactElement;
// prevent unmounting after it's rendered
if (popupVisible || this.popupRef.current || forceRender) {
portal = (
<PortalComponent
key="portal"
getContainer={this.getContainer}
didUpdate={this.handlePortalUpdate}
>
{this.getComponent()}
</PortalComponent>
);
}
if (!popupVisible && autoDestroy) {
portal = null;
}
return (
<TriggerContext.Provider
value={{ onPopupMouseDown: this.onPopupMouseDown }}
>
{trigger}
{portal}
</TriggerContext.Provider>
);
我对你们代码不是100%了解。以下是我的猜测:
portal变成null,弹出内容就彻底消失了popupVisible就是一般的visible,只要变成false,就会开始播放消失动画猜错了this.popupRef.current是在一般情况下,即使popupVisible变成false,也能在播放消失动画的时候能渲染出来的原因。也就是动画结束this.popupRef.current会变成null。this.popupRef.current只要开始显示了,就不会变成null了。
所以,我猜测应该这么改:
- 一种,是用CSSMotion的
onAppearEndonLeaveEnd等事件来得知动画消失的时机,来实现afterVisibleChange。不过这要改到PopupInner.tsx里了。 - 还有一种,直接在这个文件里改,当
popupVisible从false变成true的时候afterVisibleChange(true)。当this.popupRef.current从<true>变成<false>的时候afterVisibleChange(false)。
- Linguagem predominante
- TypeScript
- Estrelas
- 391
- Forks
- 246
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de react-component/trigger
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
react-component/trigger#593 · 1 reação ·
-
Does not work when rendered inside an iframeTalvez já em andamento @PinkChampagne17 assumiu há 131 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 58/100
react-component/trigger#623 ·
-
useAlign.js: inline style reset to 0 is silently overridden under prefers-reduced-motion CSS (CSSTransition interpolation)Talvez já em andamento @baofuen assumiu há 90 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 65/100
react-component/trigger#618 · 1 comentário ·
-
`collectScroller` is not working as expected when the element is in shadow DOMTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 42/100
react-component/trigger#555 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
react-component/trigger#550 · 1 comentário ·
Todas as issues de react-component/trigger
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
JoviDeCroock/pracht#432 ·
Mantenedores costumam responder em até 1 dia
-
Add: CNN en Espanol SDAbertaapproved check:passed streams:add
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
Hardware attribute name "app Connection Support" has inconsistent casingTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
walletbeat/walletbeat#1628 ·
Mantenedores costumam responder em até 1 dia
-
bug go
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
genkit-ai/genkit#6761 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
NousResearch/hermes-agent#136483 ·
Mantenedores costumam responder em até 1 dia