امین
4 سال پیش توسط امین مطرح شد
4 پاسخ

مشکل در لاگ گرفتن در ریکت

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

const [initData, setInitData] = useState([]);

    useEffect(() => {
        Api.get(`/`)
            .then(response => {
                let data = response.data;
                setInitData(data);
            })
    }, []);

    console.log(initData.url);

ثبت پرسش جدید
saman
@saman1111 4 سال پیش مطرح شد
1

سلام
خب مشخصه لحظه اول ما url نداریم
باید صبر کنیم دیتا از api بیاد و استیت آپدیت بشه و دوباره رندر انجام بشه
بعدش مقدار داره
چون دوبار رندر میشه بار اول undefined میده

اگه میخوای فقط مقدار اصلی رو نشون بده بزارش توی خط بعد از let data که نوشتی

console.log(data.url);

امین
@amin62 4 سال پیش مطرح شد
0

درسته حق با شماست.منتها من میخوام عملیاتی رو داخل کدهای jsx روی این دیتا انجام بدم مثل این:

<a className="navbar-brand" href={
                    initData.url.replace("http://127.0.0.1:8080/", "")
                }>{initData.name}</a>

منتها خطای Cannot read property 'replace' of undefined میده که نتیجه همین چیزی هست که فرمودید.
چه راهکاری پیشنهاد میدید که این مشکل رو بشه برطرف کرد؟


Pouyati
تخصص : font end
@pouyatirdad70 4 سال پیش مطرح شد
0

اگه اون log رو بعد از setState بگیری ، فکر کنم یبار لاگ میگیره برات


ویگن
تخصص : FrontEnd developer
@vigen 4 سال پیش مطرح شد
0

قبل از اجرای تکه کدی ک گذاشتی یک if تک خطی (اسمه دقیقشو نمیدونم) تعریف کن ک به مشکل undefined نخوری

{initData.url && (
    <a
        className="navbar-brand"
        href={initData.url.replace('http://127.0.0.1:8080/', '')}
    >
        {initData.name}
    </a>
)}

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

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