تصميم داشبورد باستخدام React يمنحك القوة والمرونة لخلق تجربة تفاعلية مذهلة وسهلة الاستخدام. تخيل لوحة تحكم ديناميكية تتيح لك مراقبة وتحليل البيانات في الوقت الفعلي، مع رسومات بيانية أنيقة، وجداول بيانات مُنظمة، وتنبيهات فورية تظهر لك كل جديد. باستخدام مكتبات مثل Material-UI و Recharts، يمكنك إنشاء واجهة مستخدم حديثة وجذابة تعمل بسلاسة على جميع الأجهزة. بالإضافة إلى ذلك، سهولة استخدام React في إعادة استخدام المكونات والتحديثات التلقائية تجعل تطوير الداشبورد ممتعًا وفعالاً، مما يوفر تجربة مميزة للمستخدمين مع سرعة استجابة وانسيابية لا مثيل لها.
داشبورد باستخدام رياكت dashboard by react
المتطلبات
تثبيت React
نقوم بانشاء مشروع جديد باسم dashboard-app باستخدام الكود التالي
npx create-react-app dashboard-app
cd dashboard-app
المكتبات المستخدمة
سنقوم باضافة مكتبة Material-UI و مكتبة @mui/x-data-grid الي المشروع باستخدام الكودين التاليين
npm install @mui/material @emotion/react @emotion/styled
npm install @mui/x-data-grid
لتحقيق وظائف مثل الرسوم البيانية، يمكنك اضافة مكتبات مثل Recharts الي المشروع باستخدام الكود التالي
npm install recharts
يمكنك إضافة FontAwesome لتحسين الأيقونات. باستخدام الكود التالي
npm install @fortawesome/react-fontawesome @fortawesome/free-solid-svg-icons @fortawesome/fontawesome-svg-core
المكونات الاساسية
سنقوم بانشاء الملفات الاساسية لتنفيذ dashboard والمكونة من sidebar , navbar و content
Sidebar.js
import React from 'react';
import { List, ListItem, ListItemText } from '@mui/material';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faChartLine, faUsers, faCog } from '@fortawesome/free-solid-svg-icons';
function Sidebar() {
return (
);
}
export default Sidebar;
الشــــــــرح
- يتم استيراد
React
لبناء مكون React. - يتم استيراد عناصر
List
,ListItem
, وListItemText
من مكتبة Material-UI لتصميم القائمة. - يتم استيراد
FontAwesomeIcon
من مكتبة FontAwesome لإضافة أيقونات. - الأيقونات المستوردة:
faChartLine
: أيقونة الخط البياني (Dashboard).faUsers
: أيقونة المستخدمين (Users).faCog
: أيقونة الترس (Settings).
div : العنصر الجذر الذي يحتوي على القائمة الجانبية. يتم تحديد العرض
250px
، والخلفية بلون فاتح#f4f4f4
، وارتفاع100vh
لجعل القائمة تمتد على كامل الشاشة الرأسية.List : العنصر الذي يمثل القائمة.
ListItem : كل عنصر في القائمة يكون قابلاً للضغط (
button
). كل عنصر يحتوي على:- أيقونة من FontAwesome يتم وضعها بجانب النص، مع مسافة
10px
بينها وبين النص. - نص يعبر عن اسم القسم (مثل “Dashboard”, “Users”, “Settings”) باستخدام مكون
ListItemText
.
- أيقونة من FontAwesome يتم وضعها بجانب النص، مع مسافة
Navbar.js
import React from 'react';
import { AppBar, Toolbar, Typography } from '@mui/material';
function Navbar() {
return (
Dashboard
);
}
export default Navbar;
الشــــــــرح
- يتم استيراد
React
لبناء مكون React. - يتم استيراد العناصر
AppBar
,Toolbar
, وTypography
من مكتبة Material-UI. هذه العناصر تُستخدم لتصميم شريط التنقل. AppBar : يمثل شريط التطبيق أو شريط التنقل (Navbar) في الأعلى. يتم تحديد الموضع الخاص به ليكون
static
، مما يعني أن شريط التنقل لن يتحرك أثناء التمرير في الصفحة.Toolbar : عنصر يحتوي على المكونات الداخلية لشريط التنقل، ويُستخدم لترتيب المحتوى داخل
AppBar
بشكل جيد.Typography : عنصر يُستخدم لعرض النص “Dashboard” داخل شريط التنقل. يتم تحديد المتغير
variant="h6"
لعرض النص بحجم وشكل العنوان الرئيسي السادس (h6)، وهو تنسيق مُعتمد من Material-UI لتنسيق النصوص بشكل جاهز.
Content.js
import React from 'react';
import Chart from './Chart';
import DataTable from './DataTable';
import StatsCard from './StatsCard';
import Notifications from './Notifications';
function Content() {
return (
Welcome to the Dashboard!
Users Table
);
}
export default Content;
الشــــــــرح
- يتم استيراد
React
لبناء مكون React. - يتم استيراد المكونات الفرعية:
Chart
: مكون لعرض الرسم البياني.DataTable
: مكون لعرض جدول المستخدمين.StatsCard
: مكون لعرض بطاقات الإحصائيات.Notifications
: مكون لعرض الإشعارات.
div (الأول) : يحتوي على جميع المحتويات الخاصة بالمكون. يتم تطبيق padding بقيمة 20px لجعل المحتوى بعيدًا قليلاً عن حواف الصفحة.
h1 : يعرض عنوان الترحيب “Welcome to the Dashboard!”.
Notifications : يعرض إشعارات للمستخدم داخل لوحة التحكم. يتم استدعاؤه مباشرة بعد العنوان الرئيسي.
div (الثاني) : يتم استخدامه لتنسيق بطاقات الإحصائيات (
StatsCard
). يحتوي هذاdiv
على 3 مكوناتStatsCard
والتي تعرض الإحصائيات التالية:Total Users
: عدد المستخدمين الإجمالي (1200).Active Sessions
: عدد الجلسات النشطة (250).Revenue
: الإيرادات المحققة ($12,000).- يتم استخدام
display: flex
لترتيب البطاقات بشكل أفقي، وjustifyContent: 'space-around'
لتوزيع البطاقات بالتساوي.
Chart : مكون لعرض الرسم البياني داخل لوحة التحكم.
h2 : يعرض عنوان “Users Table” للإشارة إلى الجدول الذي يحتوي على بيانات المستخدمين.
DataTable : يعرض جدول المستخدمين.
المكونات الاضافية
Chart.js
import React from 'react';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
const data = [
{ name: 'Jan', uv: 4000, pv: 2400, amt: 2400 },
{ name: 'Feb', uv: 3000, pv: 1398, amt: 2210 },
{ name: 'Mar', uv: 2000, pv: 9800, amt: 2290 },
];
function DashboardChart() {
return (
);
}
export default DashboardChart;
الهدف من الكود
الكود يُنشئ رسمًا بيانيًا خطيًا باستخدام مكتبة recharts
لعرض بيانات بسيطة لعدة شهور (يناير، فبراير، مارس). يتم رسم خطين بيانيين يعرضان البيانات uv
و pv
بشكل متجاوب مع حجم الشاشة، مع ميزات إضافية مثل الشبكة الديكارتية، الإرشادات (Tooltip)، والأسطورة (Legend) لتسهيل فهم البيانات.
DataTable.js
import React from 'react';
import { DataGrid } from '@mui/x-data-grid';
const columns = [
{ field: 'id', headerName: 'ID', width: 90 },
{ field: 'name', headerName: 'Name', width: 150 },
{ field: 'email', headerName: 'Email', width: 150 },
{ field: 'age', headerName: 'Age', width: 110 },
];
const rows = [
{ id: 1, name: 'Ahmed', email: 'ahmed@example.com', age: 35 },
{ id: 2, name: 'Mohamed Ghareb', email: 'mohamed@example.com', age: 42 },
{ id: 3, name: 'Ali Johnson', email: 'ali@example.com', age: 28 },
];
function DataTable() {
return (
);
}
export default DataTable;
الهدف من الكود
الكود يُنشئ جدول بيانات تفاعلي باستخدام مكتبة @mui/x-data-grid
. يعرض الجدول 3 صفوف و 4 أعمدة (ID, Name, Email, Age) مع ميزات مثل تحديد الصفوف باستخدام مربعات اختيار (checkboxes) والتحكم في عدد الصفوف المعروضة في الصفحة (pageSize). الجدول يتميز بواجهة مستخدم سهلة التعامل ومتكاملة مع التصميم العصري الخاص بـ Material-UI.
StatsCard.js
import React from 'react';
import { Card, CardContent, Typography } from '@mui/material';
function StatsCard({ title, value }) {
return (
{value}
{title}
);
}
export default StatsCard;
الهدف من الكود
الكود يُنشئ بطاقة إحصائيات يمكن استخدامها لعرض قيم مثل عدد المستخدمين أو الإيرادات. البطاقة تحتوي على عنصرين رئيسيين: القيمة و العنوان، مع تنسيق بسيط باستخدام مكتبة Material-UI. يتم تخصيص البطاقة بألوان وخطوط مميزة لجعلها تتماشى مع تصميم واجهة المستخدم.
Notifications.js
import React, { useState } from 'react';
import { Snackbar, Button } from '@mui/material';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faBell } from '@fortawesome/free-solid-svg-icons';
function Notifications() {
const [open, setOpen] = useState(false);
const handleClick = () => {
setOpen(true);
};
const handleClose = () => {
setOpen(false);
};
return (
);
}
export default Notifications;
الهدف من الكود
الكود يُنشئ مكون إشعارات بسيط باستخدام Snackbar
و Button
من مكتبة Material-UI. عندما يضغط المستخدم على الزر الذي يحتوي على أيقونة الجرس، يظهر إشعار في أسفل الشاشة لمدة 6 ثوانٍ ثم يختفي تلقائيًا. كما يمكن إغلاق الإشعار يدويًا بالنقر عليه أو خارجه.
دمج المكونات
App.js
import React from 'react';
import Sidebar from './Sidebar';
import Navbar from './Navbar';
import Content from './Content';
function App() {
return (
);
}
export default App;
الشــــــــــــرح
- يتم استيراد مكتبة React.
- يتم استيراد المكونات الثلاثة الرئيسية:
Sidebar
: الشريط الجانبي للتطبيق.Navbar
: شريط التنقل في أعلى الصفحة.Content
: المحتوى الرئيسي الذي يظهر في الصفحة بعد شريط التنقل.
- div الخارجي:
- يحتوي على مكونات التطبيق ويتم تطبيق نمط
display: 'flex'
لجعل المحتويات تظهر بشكل أفقي.
- يحتوي على مكونات التطبيق ويتم تطبيق نمط
- Sidebar:
- يتم عرض مكون الشريط الجانبي، والذي يشغل مساحة ثابتة إلى اليسار.
- div الداخلي:
- يحتوي على مكونات
Navbar
وContent
. - خاصية
flexGrow: 1
تعني أن هذا الجزء سيأخذ المساحة المتبقية المتاحة من الشاشة بعد تخصيص المساحة للشريط الجانبي.
- يحتوي على مكونات
- Navbar:
- مكون شريط التنقل الذي يظهر في أعلى الصفحة.
- Content:
- مكون المحتوى الرئيسي الذي يحتوي على البيانات أو الرسومات أو أي محتوى آخر يظهر أسفل شريط التنقل.
بذلك نكون صممنا داشبورد باستخدام رياكت بالصورة الاخيرة لة
Sharing to