"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Veja a animação de transição no aplicativo React.js

Veja a animação de transição no aplicativo React.js

Publicado em 2024-08-27
Navegar:661

View Transition Animation in React.js App

Outro dia eu quero criar itens de remoção rápida da animação de lista para o site. Desta vez, pule o React Transition Group, experimente a nova View Transition e economize tempo.

Por que escrever muitos códigos quando poucos códigos funcionam.

Ver API de transição apenas no Chrome, mas não me importo.

Crux é document.startViewTransition.

Mas é necessário estabelecer o DOM antes do estado, depois do estado, mas o React.js não permite.

React.js reativo. Não síncrono. document.startViewTransition precisa de síncrono.

Pergunte ao Google para saber:

import { flushSync } from "react-dom";

flushSync(() => setState(...));

Meu gancho de escrita:

import { useState } from "react";
import { flushSync } from "react-dom";

export const useViewTransition =
  typeof document !== "undefined" && "startViewTransition" in document
    ? (newValue: T) => {
        const [value, setValue] = useState(newValue);
        if (value !== newValue) {
          document.startViewTransition(() => {
            flushSync(() => {
              setValue(newValue);
            });
          });
        }
        return value;
      }
    : (value: T) => value;

Se usar useQuery

const { data: newMsgs } = useQuery({
  queryKey: ["msgs"],
  queryFn: msgs.all(25)
});

const msgs = useViewTransition(newMsgs);

return (
  
    {msgs?.map(item => (
  1. {item.title}
  2. ))}
);

Agora, quando useQuery update, ligue para document.startViewTransition e depois setState.

Precisa de CSS global

Eu adicione global.css:

@supports (view-transition-name: none) {
  ::view-transition-group(root) {
    animation-duration: 0s;
  }
  ::view-transition-group(.mymsg) {
    animation-duration: 0.4s;
  }
}

Isso diz ao Chrome: não faça a transição da página inteira, apenas faça a transição dos itens da lista.

Agora a animação da lista de mensagens funciona. Muito legal.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/ctnr/using-view-transitions-in-reactjs-1064?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3