it-swarm.dev

replaceState () مقابل pushState ()

لقد قرأت وأبحث عن مزايا/عيوب بين replaceState() و pushState(). اقرأ أيضًا Mozilla's مقالة وهذا اختبار مثير للاهتمام ولكن لا يزال غير واضح بالنسبة لي الاختلافات.

أي واحد يهتم لشرح في ما تختلف؟

73
Rikard

replaceState() will تغيير عنوان URL في المتصفح (أي. الضغط على زر الرجوع لن يعيدك)

pushState() سيغير عنوان URL ، ويحتفظ بالواحد القديم في سجل المتصفح (أي أن الضغط على زر الرجوع سيعيدك)

124
user1318194

من الرابط الخاص بك

يعمل history.replaceState () تمامًا مثل history.pushState () فيما عدا أن يقوم replaceState () بتعديل إدخال السجل الحالي بدلاً من إنشاء إدخال جديد.

replaceState () مفيد بشكل خاص عندما تريد تحديث كائن الحالة أو عنوان URL لإدخال السجل الحالي استجابةً لبعض إجراءات المستخدم.

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

فكر في الأمر كأنني أتعامل مع مجموعة أوراق عن طريق وضع بطاقة واحدة أعلى الأخرى (وجهًا لأعلى) ويمكنك فقط أخذ البطاقة العليا في الكومة (مثل آخر بطاقة قمت بتداولها). دعنا نقول أنني وضعت جاك القلوب على كومة. الآن للحصول على البطاقة التالية إذا كنت تستخدم replaceState ، فأنا أخلع Jack of Hearts وأضع البطاقة التالية. عدد البطاقات هو نفسه منذ أن استبدلنا البطاقة العليا. إذا كنت قد استخدمت pushState بدلاً من ذلك ، لكنت وضعت البطاقة التالية أعلى Jack of Hearts (حتى الآن كلاهما موجود في الكومة وتكون الكومة أعلى واحدة).

قم بتبديل البطاقات في القياس مع عناوين URL وهذه هي الطريقة التي يتم بها تعديل سجل عناوين URL.

44
keyboardP