"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > عرض الرسوم المتحركة الانتقالية في تطبيق React.js

عرض الرسوم المتحركة الانتقالية في تطبيق React.js

تم النشر بتاريخ 2024-08-27
تصفح:696

View Transition Animation in React.js App

في يوم آخر، أريد إنشاء عناصر إزالة سريعة من قائمة الرسوم المتحركة للموقع. هذه المرة، قم بتخطي React Transition Group، وجرّب عرض انتقالي جديد، ووفّر الوقت.

لماذا تكتب الكثير من الأكواد بينما القليل من الأكواد تؤدي الخدعة.

عرض Transition API لمتصفح Chrome فقط، ولكن لا يهمني.

الأصل هو document.startViewTransition.

ولكن يلزم إنشاء DOM قبل الحالة، وبعد الحالة، لكن React.js لا يسمح بذلك.

React.js رد الفعل. غير متزامن. document.startViewTransition يحتاج إلى متزامن.

اسأل جوجل لتتعلم:

import { flushSync } from "react-dom";

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

أنا أكتب الخطاف:

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;

إذا استخدم useQuery

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

const msgs = useViewTransition(newMsgs);

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

الآن عند تحديث useQuery، قم بتوصيل document.startViewTransition ثم setState.

تحتاج CSS العالمية

أضيف global.css:

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

هذا يخبر Chrome: لا تنقل الصفحة بأكملها، بل تنقل عناصر القائمة فقط.

الآن تعمل الرسوم المتحركة لقائمة الرسائل. لطيف جدًا.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/ctnr/using-view-transitions-in-reactjs-1064?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3