پیشنهاد شگفت‌انگیز سبزلرن: 50% تخفیف برای دوره پروژه های تخصصی با جاوا اسکریپت برای بازار کار
مشاهده دوره
ثانیه
دقیقه
ساعت
روز
پرسش

چطور ارتفاع viewport پنجره رو در ReactJS به دست بیارم؟

get viewport window height in reactjs

من می‌خوام بدونم که چطور می‌تونم ارتفاع ویوپورت(viewport - همون ارتفاع پنجره مرورگر) رو تو ReactJS به دست بیارم؟
برای این کار باید چه کدی بنویسم که این ارتفاع رو توی یه کامپوننت React بگیرم؟ و همچنین اگه این ارتفاع تغییر کرد، می‌خوام این مقدار دوباره به‌روز بشه. اگر راه حلی دارید، لطفا بهم بگید.

1403/05/25
پاسخ
محمدامین سعیدی راد
بیوگرافی محمدامین سعیدی راد

برای اینکه بتونی ارتفاع ویوپورت یا همون ارتفاع پنجره مرورگر رو توی ReactJS به دست بیاری، باید از state و event listenerها استفاده کنی,

تا وقتی اندازه پنجره تغییر می‌کنه، این مقدار هم آپدیت بشه. اینجا یه مثال ساده از کدی که می‌تونی استفاده کنی برات میارم:

import React, { useState, useEffect } from "react";
function App() {
const [windowHeight, setWindowHeight] = useState(window.innerHeight);
useEffect(() => {
const handleResize = () => {
setWindowHeight(window.innerHeight);
};
window.addEventListener("resize", handleResize);
return () => {
window.removeEventListener("resize", handleResize);
};
}, []);
return (
<div>
<h1>ارتفاع ویوپورت: {windowHeight}px</h1>
</div>
);
}
export default App;

توضیحات کد:

  • اول از همه، یه state به اسم windowHeight با مقدار اولیه‌ی window.innerHeight ساختیم که همون ارتفاع فعلی ویوپورت رو می‌گیره.
  • توی useEffect، یه event listener به اسم handleResize تعریف کردیم که هر بار سایز پنجره تغییر کنه، مقدار جدید window.innerHeight رو می‌گیره و توی state ذخیره می‌کنه.
  • وقتی کامپوننت mount شد، این event listener رو به resize اضافه می‌کنیم. وقتی کامپوننت unmount شد، اون رو پاک می‌کنیم تا از memory leak جلوگیری کنیم.
  • در نهایت، توی JSX، ارتفاع ویوپورت رو نمایش می‌دیم.

این کد به خوبی کار می‌کنه و هر وقت کاربر اندازه پنجره رو تغییر بده، مقدار ارتفاع به‌روز میشه.

موفق باشی!

پاسخ: 1403/05/25
آخرین آپدیت: 1403/07/11