راکت

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

4 پاسخ

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

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

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

    console.log(initData.url);
ثبت پرسش جدید

پاسخ‌ها

4
saman
saman
@saman1111

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

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

console.log(data.url);
امین
امین
@amin62

درسته حق با شماست.منتها من میخوام عملیاتی رو داخل کدهای 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
Pouyati
@pouyatirdad70

تخصص: font end

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

ویگن
ویگن
@vigen

تخصص: FrontEnd developer

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

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

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

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