دوستان مشکل این کد چیه که به جای یکبار لاگ گرفتن 2 بار میگیره و اولی undifined هست و دفعه دوم تازه جواب رو برمیگردونه
const [initData, setInitData] = useState([]);
useEffect(() => {
Api.get(`/`)
.then(response => {
let data = response.data;
setInitData(data);
})
}, []);
console.log(initData.url);
سلام
خب مشخصه لحظه اول ما url نداریم
باید صبر کنیم دیتا از api بیاد و استیت آپدیت بشه و دوباره رندر انجام بشه
بعدش مقدار داره
چون دوبار رندر میشه بار اول undefined میده
اگه میخوای فقط مقدار اصلی رو نشون بده بزارش توی خط بعد از let data که نوشتی
console.log(data.url);
درسته حق با شماست.منتها من میخوام عملیاتی رو داخل کدهای jsx روی این دیتا انجام بدم مثل این:
<a className="navbar-brand" href={
initData.url.replace("http://127.0.0.1:8080/", "")
}>{initData.name}</a>
منتها خطای Cannot read property 'replace' of undefined میده که نتیجه همین چیزی هست که فرمودید.
چه راهکاری پیشنهاد میدید که این مشکل رو بشه برطرف کرد؟
قبل از اجرای تکه کدی ک گذاشتی یک if تک خطی (اسمه دقیقشو نمیدونم) تعریف کن ک به مشکل undefined نخوری
{initData.url && (
<a
className="navbar-brand"
href={initData.url.replace('http://127.0.0.1:8080/', '')}
>
{initData.name}
</a>
)}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟