پروژه اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است.
برای اجرای پروژه، باید NodeJS
و npm
را از قبل نصب کرده باشید.
nested-comments
، دستور npm install
را برای نصب نیازمندیها اجرا کنید.npm start
را برای راهاندازی پروژه اجرا کنید.http://localhost:3000/
میتوانید نتیجه را ببینید.ظاهر کلی برنامه بدین صورت است:
در این سوال میخواهیم لیست کامنتها را بهصورت درختی نمایش دهیم.
لیست کامنتها در پوشه data
وجود دارد. ساختار هر کامنت به شکل زیر است:
در این ساختار هر کامنت دارای یک parentId است. اگر مقدار این فیلد null
باشد به این معنا است که این کامنت دارای والد نیست.
در غیر این صورت به ایدی والد این کامنت اشاره میکند.
برای مثال لیست کامنتها به شکل زیر است:
این لیست باید به شکل زیر نشان داده شود:
در شکل بالا کامنتهای id-1 و id-4 سطح صفر، id-2 و id-5 سطح یک و کامنت id-3 سطح دو هستند.
margin-left
باشد.
برای مثال اگر کامنت در سطح صفر بود (یعنی والد است و والدی ندارد) باید دارای استایل margin-left: 0px
باشد.
اگر کامنت در سطح یک بود (دارای والد است) باید دارای استایل margin-left: 16px
باشد.
اگر کامنت در سطح دو بود (دارای والد است و والد آن خود والد دارد) باید دارای استایل margin-left: 32px
باشد.root-comment
باشد.EmptyList
نمایش داده شود.App.jsx
: شما لیست کامنتها را در کامپوننت دریافت میکنید. قبل از فرستادن comments
به کامپوننت CommentList
باید ساختار مورد نظر را ایجاد کنید.CommentList.jsx
: در این کامپوننت شما باید لیست کامنتها را نمایش دهید. کلاس root-comment
را برساس شرایط گفته شده در قسمت گفته شده قرار دهید.
شما باید کامنت سطح صفر بههمراه فرزندانش را در اینجا نشان دهید. در صورتی که فرزندی نداشت چیزی نباید نشان دهید.CommentBox.jsx
: برای نمایش هر کامنت از این کامپوننت استفاده کنید. استایل margin-left
و شرایط گفته شده باید در اینجا پیادهسازی شود.App.jsx
و CommentList.jsx
و CommentBox.jsx
هستید.data-testid
پروژه اولیه نباید تغییر کنند.comment-box
داخل فایل CommentBox.jsx
داده شود.