راکت
حل شده

ویو جی اس ایجاد عملیات همگام

4 پاسخ

سلام
من برای فرانت پروژم از ویو استفاده کردم اما ایرادی که وجود داره اینه که یه موردشو برای صفحه محصولات میگم.
من اطلاعات محصولاتو با axios میخونم و در یه متغیری میریزم و لیستو نشون میدم .
من تو تمپلیت کامپوننت محصولات با دایرکتیو v-if مقدار متغیری که با axiosخونده میشه رو برسی کردم که اگه محصولی یافت نشد بیا یه پیام نشون بده بگو محصولی برای نمایش نیست و بعد این المنت لیست محصولات نمایش داده میشه.
مشکل اینه که این پیام در حالتی که محصولات وجود هم داشته باشه در ابتدا به مدت دو ثانیه نشون داده میشه بعد دو ثانیه مخفی میشه و بعد لیست محصولات نشون داده میشه. وقتی محصولی وجود داره انصافا نباید این پیام نشون دهده بشه چطور میشه جلوی نمایش بیخود این پیامو گرفت؟؟
شاید مربوط به اجرای ناهمگام جاوا اسکریپت باشه که منتظر کامل شدن اجرای درخواست axios نمیمونه و با مقادیر خالی متغیر محصولات شرطو چک میکنه.
اگه مربوط به عملیات ناهمگام است میتونید راهنمایی بفرمایید؟؟

ثبت پرسش جدید

پاسخ‌ها

4
حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

بهترین پاسخ

سلام از لودینگ استفاده کردم ولی من از یه روش بهتری استفاده کردم
من برای نمایش پیام محصولی یافت نشد یه متغییر جداگانه تعریف کردم که مقدارشو در ابتدا false در نظر گرفتم تا پیام نشون داده نشه و مقدار این متغییر فقط زمانی بروزرسانی میشه که جواب کوئری من از سرور دریافت بشه و اگر محصولی یافت شد که مقدارش همچنان false باقی می ماند و تغییری نمی کند اگر هم محصولی یافت نشد مقدارش true میگردد و پیام نشون داده می شود. ما این برسی شرطو داخل قسمت then درخواست با axios قرار می دهیم با این روش دیگه هرگز برای یک ثانیه هم اون پیام بی علت و بدون منطق و مدریت ما نشون داده نمی شود و صدرصد کاربردیس.

Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

شما در حالت لودینگ هیچی رو نشون نمی‌دین، می‌تونین یه متغیر به اسم loaded داشته باشین که پیشفرض false باشه، تا وقتی که false باشه یه المنت دیگه رو نمایش بدین و هر وقت true شد چیزایی که گفتین رو نشون بدین.
بعد لود اگه آرایه محصولات خالی بود اون پیام رو نشون می‌دین، اگه خالی نبود هم که لیست محصولات نشون داده میشه.

سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

این چیزی که دوستمون گفت درسته اگر المنت رو داری باید اینجوری عمل کنی ولی

اگر اطلاعات شما از متغییر خونده میشه یعنی همون "اگه محصولی یافت نشد بیا یه پیام نشون بده"
میتونی از v-cloak برای مخفی کردن استفاده کنی و توی استایل ها display:none قرار بدی تا موقعی که اطلاعات رو دریافت کنی.

[v-cloak] {
    display: none;
}

<p v-if="loading" v-cloak>Loading</p>

شاید پاسخ شما همین‌جا باشد

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

مرسی از شما
از لودینگ استفاده کردم مشکلم برطرف شد
نکته ای که هست باید رنگ لودینگ رو مشکی در نظر بگیرم تا هیچی از زیرش مشخص نباشه چون با مقدار کم رنگ مشکی برای لودینگ بازم اون محتوای زیر نمایش داده میشه
@muhammad
@juza66

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام