$sessionStorage

أثناء الرحلة الحالية، احفظ الحالة المؤقتة لمثيل الأداة الحالية، مثل السرعة القصوى التي لاحظها الجهاز، أو الأوقات المتراكمة، أو نتيجة الحساب للإطار السابق. فارغة بعد الرحلة.

نطاق التخزين

تشير "جلسة العمل" هنا إلى الرحلة الحالية. في نفس الرحلة، يمكن للأداة استرداد القيمة المحفوظة مسبقًا عند تنفيذ main() عدة مرات، لذا فهي مناسبة للحفاظ على حالة الإطار المتقاطع مثل قيم الذروة والعدادات.

ينتمي التخزين إلى مثيل الأداة الحالية في نفس الوقت: ضع أداتين متطابقتين على الصفحة، وسيحفظ كل منهما حالته الخاصة.

متى يجب الاحتفاظ به ومتى يتم مسحه

حالة سلوك التخزين
نفس الرحلة، نفس مثيل الأداة التي تعمل بشكل مستمر محجوز بين عدة مكالمات إلى main().
تنتهي الرحلة الحالية، أو يخرج التطبيق من حالة التسجيل فارغ. يقوم get بإرجاع null في حالة عدم وجود رحلة نشطة، ولا يحتفظ set بالكتابة.
ابدأ الرحلة التالية يبدأ من مساحة تخزين فارغة ولا يرث القيم من القسم السابق.
تتم إعادة تحميل البرنامج النصي للأداة، أو يتم إتلاف مثيل السحب، أو تتم إعادة تشغيل التطبيق يتم فقدان القيم المؤقتة ولن يتم استعادتها حتى لاحقًا خلال نفس الرحلة.
معاينة المحرر استخدم مخزن المعاينة المستقل ولا تكتب خط سير السيارة الفعلي؛ لن يتم استخدام قيمة المعاينة عند التبديل إلى التشغيل الفعلي.

يقوم بحفظ الحالة التي تمت ملاحظتها وحسابها أثناء تشغيل الجهاز. إذا تم تشغيل الجهاز في منتصف الطريق، فلا يمكن الحصول على القيمة القصوى للرحلة قبل التشغيل تلقائيًا؛ البيانات التي يجب الاحتفاظ بها لفترة طويلة لا ينبغي حفظها هنا فقط.

قراءة وكتابة الكائنات والمصفوفات

يستخدم كل من get وset نسخ البيانات. على سبيل المثال، إذا قمت بإخراج مصفوفة وإضافة عناصر إليها، فلن يتغير المصفوفة الأصلية الموجودة في وحدة التخزين، وستحتاج إلى استدعاء set مرة أخرى لحفظ التغييرات.

يجب أن يكون المفتاح سلسلة. يمكن أن تحتوي على أرقام محدودة، وسلاسل، وقيم منطقية، null، والكائنات والمصفوفات العادية المكونة من هذه القيم. لا يمكن حفظ الوظائف وView والمراجع الدائرية والكائنات الخاصة. بعد ضبط المفتاح على null، اقرأ المفتاح للحصول على null؛ توفر الواجهة الحالية طريقتين، get وset.

مثال: السرعة القصوى التي لوحظت خلال هذه الرحلة

يتم تعريف مدخلين البيانات الأساسية في تكوين المعلمات: السرعة بالمعرف speed، وحالة التسجيل بالمعرف recording. يتم عرض خط أفقي في حالة عدم وجود رحلة نشطة؛ يقارن كل تشغيل السرعة الحالية بقيمة الذروة المحفوظة، ثم يحفظ القيمة الأكبر. يتم حفظ قيم الذروة في km/h ويتم تحويلها وفقًا للوحدة الحالية عند عرضها لتجنب خلط الوحدات.

في حالة عدم وجود اختبار، يتم الاحتفاظ بقيمة الذروة المرصودة، وتشارك قيمة الصفر الفعالة في الحساب بشكل طبيعي؛ يبدأ الجزء التالي من الرحلة من القيمة الخالية.

function main() {
  if ($data.current.recording !== true) {
    return (
      <Text fontSize={48} color={$env.foreground}>
        —
      </Text>
    );
  }
  const speed = $data.current.speed;
  const saved = $sessionStorage.get('peakKmh');
  let peak = typeof saved === 'number' ? saved : null;

  if (typeof speed?.value === 'number') {
    const kmh = speed.unit === 'mph' ? speed.value * 1.609344 : speed.value;
    peak = peak == null ? kmh : Math.max(peak, kmh);
    $sessionStorage.set('peakKmh', peak);
  }

  const unit = speed?.unit ?? $env.speedUnit;
  const value =
    peak == null ? '—' : Math.round(unit === 'mph' ? peak / 1.609344 : peak);
  return (
    <VStack spacing={6}>
      <Text fontSize={48} color={$env.foreground}>
        {value}
      </Text>
      <Text color={$env.accent}>{unit}</Text>
    </VStack>
  );
}

حدود السعة

يحتوي كل مخزن على 256 مفتاحًا كحد أقصى، ويبلغ إجمالي حجم البيانات حوالي 1 MiB؛ يبلغ الحد الأقصى للمفتاح الواحد 256 UTF-8 بايت. هناك أيضًا حدود للحجم والتداخل عند نسخ القيم. إذا تم تجاوز الحد أو تم تمرير قيمة غير مدعومة، فسيتم الإبلاغ عن خطأ، ولن تؤدي الكتابة الفاشلة إلى استبدال القيمة الأصلية الصالحة.

مناسبة لحفظ كمية صغيرة من الحالة الإحصائية. سوف يستمر إلحاق المصفوفة إطارًا بإطار لفترة طويلة في النمو. يجب أن يستخدم المنحنى $data.history أولاً، أو يحدد طول المصفوفة بنفسك.

طريقة

get(key: string)unknown | null

يقرأ القيمة التي حفظها مثيل العداد هذا أثناء الرحلة الحالية. يعيد null إذا كان المفتاح غير موجود، ويعيد الكائنات والمصفوفات كنسخ مستقلة.

set(key: string, value: unknown)void

يحفظ نسخة من القيمة تحت المفتاح المحدد أو يستبدلها. لا تُحتفظ بالكتابات عند عدم وجود رحلة جارية. يعيد undefined.