১.useEffect কী করছে
useEffect(() => { ... }, []);
-
useEffectহলো React এর একটি হুক যা কম্পোনেন্ট মাউন্ট হওয়ার পরে কোনো সাইড ইফেক্ট (যেমন ডাটা ফেচিং) করার জন্য ব্যবহৃত হয়। -
এখানে
[]ডিপেনডেন্সি অ্যারে খালি, মানে এটা কেবল কম্পোনেন্ট প্রথমবার মাউন্ট হওয়ার সময়ই চলবে।
২️ fetchVisitorLogs ফাংশন ডিফাইন
async function fetchVisitorLogs() { ... }
-
আমরা একটি অ্যাসিনক্রোনাস ফাংশন বানিয়েছি, যাতে
awaitব্যবহার করে ডাটার জন্য অপেক্ষা করতে পারি।
৩️API থেকে ডাটা আনা
const response = await fetch(`${baseURL}/api/visitor/log-get`);
const data = await response.json();
-
fetchদিয়েvisitor/log-getAPI থেকে ডাটা আনা হচ্ছে। -
await response.json()দিয়ে API থেকে JSON ফরম্যাটে ডাটা নিয়ে আসা হচ্ছে।
৪️ব্র্যান্ড অনুযায়ী ভিজিটের হিসাব
const brandCounts = data.data.reduce((acc, log) => {
if (log.page_type === "brand") {
const existing = acc.find(b => b.brand_name === log.page_name);
if (existing) {
existing.total_visits += 1;
} else {
acc.push({ brand_name: log.page_name, total_visits: 1 });
}
}
return acc;
}, []);
-
data.data.reduce(...): ডাটার মধ্যে লুপ চালাচ্ছে এবং প্রতিটি লোগকে প্রোসেস করছে। -
log.page_type === "brand": শুধুমাত্র ব্র্যান্ড পেজের লোগগুলো বিবেচনা করা হচ্ছে। -
acc.find(...): আগে থেকে কোনো ব্র্যান্ডের রেকর্ড আছে কি না চেক করা হচ্ছে। -
যদি ব্র্যান্ড আগে থেকেই থাকে →
existing.total_visits += 1(ভিজিট সংখ্যা বাড়ানো)। -
যদি না থাকে → নতুন ব্র্যান্ড অবজেক্ট
accতে যোগ করা। -
এইভাবে আমরা সব ব্র্যান্ডের মোট ভিজিটের সংখ্যা গণনা করি।
৫️ভিজিট সংখ্যা অনুযায়ী সাজানো
brandCounts.sort((a, b) => b.total_visits - a.total_visits);
-
sortদিয়ে ব্র্যান্ডগুলোর তালিকাকে বেশি ভিজিটের ব্র্যান্ড আগে এবং কম ভিজিটের পরে সাজানো হচ্ছে।
৬️React state-এ সংরক্ষণ
setMostVisitedBrands(brandCounts);
-
setMostVisitedBrandsহলো একটি React state ফাংশন। -
আমরা এখানে গণনা করা ব্র্যান্ড এবং তাদের ভিজিট সংখ্যা React state-এ রাখছি, যাতে কম্পোনেন্টে ডাটা ব্যবহার করা যায়।
৭️এরর হ্যান্ডলিং
} catch (error) {
console.error("Error fetching visitor logs:", error);
}
-
যদি কোনো সমস্যা হয় API কলের সময়, তা কনসোলে দেখানো হবে।
৮️ফাংশন কল করা
fetchVisitorLogs();
-
উপরের সব কাজ করার জন্য আমরা ফাংশনটাকে একবার কল করছি।
💡 সারসংক্ষেপ:
-
কম্পোনেন্ট মাউন্ট হলে ডাটা ফেচ হবে।
-
শুধু ব্র্যান্ড পেজের ভিজিটের লোগ নেওয়া হবে।
-
প্রতিটি ব্র্যান্ডের মোট ভিজিট গণনা করা হবে।
-
ভিজিট সংখ্যা অনুযায়ী ব্র্যান্ড সাজানো হবে।
-
React state-এ সেট করা হবে।

0 Comments