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

أساسيات التفاعل~تقديم الأداء/استخدامالانتقال

تم النشر بتاريخ 2024-11-08
تصفح:451
  • لنفترض أننا نعرض عددًا كبيرًا من البيانات، مثل 10 آلاف من البيانات، فغالبًا ما يكون هناك تأخير في وضع القيمة التالية في حقل الإدخال.

  • في هذه الحالة، عندما نقوم بإدخال قيمة، تعرض الشاشة البيانات التي تمت تصفيتها.

  • ولكن المشكلة التي تحدث بعد ذلك هي التأخير في عرض الإجراء التالي مثل إدخال القيمة التالية في حقل الإدخال بسبب التعامل مع الكثير من البيانات.

・src/Example.js

import { useState } from "react";

const generateDummyItem = (num) => {
  return new Array(num).fill(null).map((item, index) => `item ${index}`);
};

const dummyItems = generateDummyItem(10000);

const Example = () => {
  const [filterVal, setFilterVal] = useState("");

  const changeHandler = (e) => {
      setFilterVal(e.target.value);
  };

  return (
    
      
      {isPending && 
Loading...
}
    {dummyItems .filter((item) => { if (filterVal === "") return true; return item.includes(filterVal); }) .map((item) => (
  • {item}
  • ))}
> ); }; export default Example;
  • لحل المشكلة، يمكننا تغليف الدالة setFilterVal بـ startTransition.
  const changeHandler = (e) => {
    startTransition(() => {
      setFilterVal(e.target.value);
    })
  };
  • يؤدي startTransition إلى تأخير تنفيذ الوظيفة داخله.

  • بفضل هذه الميزة، يمكننا الانتقال بسهولة إلى القيمة التالية في حقل الإدخال.

・قبل الإدخال
React Basics~Render Performance/ useTransition

・بعد الإدخال
React Basics~Render Performance/ useTransition

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/kkr0423/react-basicsrender-performance-usetransition-c7d?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3