مهارتهای لازم:
- آشنایی با
ReactJS
- آشنایی با
Redux
- کدخوانی
محمد و جواد و مهدی همیشه برای اینکه میتوانند از پرداخت تومن استفاده کنند خیلی خوشحال هستند آنها میخواهند دفترچه یادداشتی با react
و redux
درست کنند که خاطرات استفاده از پرداخت تومن را در آن یادداشت کنند.
پروژه اولیه
پروژه اولیه را از اینجا دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است.
toman-booklet
├── public
│ ├── static
│ │ ├── image
│ │ │ ├── document.png
│ │ │ ├── folder-horizontal.png
│ │ │ ├── toggle-small-expand.png
│ │ │ └── toggle-small.png
│ │ └── style.css
│ └── index.html
├── src
│ ├── actions
│ │ └── index.js
│ ├── containers
│ │ ├── Editor.js
│ │ └── Node.js
│ ├── reducers
│ │ └── index.js
│ ├── generateTree.js
│ └── index.js
├── package.json
└── pnpm-lock.yaml
راهاندازی پروژه
برای اجرای پروژه، باید NodeJS
و npm
را از قبل نصب کرده باشید.
- ابتدا پروژهی اولیه را دانلود و از حالت فشرده خارج کنید.
- در پوشهی
toman-booklet
، دستورnpm install
را برای نصب نیازمندیها اجرا کنید. - در همین پوشه، دستور
npm start
را برای راهاندازی پروژه اجرا کنید. - پس از انجام موفق این مراحل، با مراجعه به آدرس
http://localhost:3000/
میتوانید نتیجه را ببینید.
جزئیات
طراحی state برنامه بدین صورت است:
{
editNode: null or nodeId,
nodes: {
nodeId: {
id: Int or String,
name: String,
content: String,
childIds: Array(nodes),
isDir: true or false
}, ...
}
}
editNode
: مشخص کنندهid
فایل در حال تغییر است. و یاnull
میباشد.nodes[nodeID].id
: رشته یا عددی کهid
فایل یا پوشه را مشخص میکند.nodes[nodeID].name
: نام فایل یا پوشهnodes[nodeID].content
: محتوای فایل را نگه میدارد در حالت پوشه یک رشته خالی است.nodes[nodeID].childIds
: آرایهای ازid
فایلها و پوشهها که زیرمجموعه پوشه فعلی هستند این مورد برای فایل یک آرایه خالی است.nodes[nodeID].isDir
: اگر پوشه باشدtrue
و در صورت فایل بودن مقدارfalse
میگیرد.
در این پروژه دو قسمت کلی وجود دارد وجود دارد:
Node
: درخت فایلها و پوشهها را مشخص میکند و برای هر پوشه امکان ایجاد یکپوشه جدید زیرمجموعه
و یافایل زیرمجموعه
وجود دارد و میتوان پوشه را حذف کرد. برای هر فایل نیز امکان حذف فایل وجود دارد.Editor
: اگر روی نام یک فایل کلیک شود در این مولفه امکان تغییر نام و محتوای فایل وجود دارد و با زدن دکمه ذخیره تغییرات ذخیره میشود.
داخل فایل actions/index.js
اطلاعات مربوط به action ها قرار دارد.
در این پروژه شش نوع action (عملیات) وجود دارد:
CREATE_NODE
: با اجرای اینaction
فایل یا پوشه جدیدی ساخته شود. پدر و فرزندی در اینجا تعیین نمیشود.ADD_CHILD
: رابطه پدر فرزندی برای دوid
تعیین میشود.REMOVE_CHILD
: مقدارid
یک پوشه را میگیرد و از بین id فرزندانشchildId
را حذف میکند.DELETE_NODE
: مقدارid
یک فایل یا پوشه را میگیرد و آنرا و تمام زیر مجموعههای آنرا حذف میکند. اثراتid
در پدر نباید از بین برود و حذف این اثرات باDELETE_CHILD
انجام میشود.EDIT_NODE
: امکان تغییر نام و محتوای درون فایل را فراهم میکند.SET_EDIT_NODE
: فایل را به عنوان فایل فعلی برای تغییر انتخاب میکند.
طبق تعریف انجام شده بایستی action
ها عمل کنند (reducer به درستی پیاده سازی شود) و همچنین موارد زیر پیاده سازی شود.
- با کلیک بر روی
📄
فایل جدیدی به پوشه اضافه شود. - با کلیک بر روی
📂
پوشه جدیدی به پوشه جاری اضافه شود. - با کلیک بر روی
×
فایل یا پوشه و تمامی فرزندان حذف شود. - با کلیک بر روی نام فایل، به عنوان فایل فعلی مورد تغییر انتخاب شود.
- با تغییر نام و محتوای فایل و ذخیره آن تغییرات اعمال شود.
این تغییرات با استفاده از action
ها انجام میگیرد.
نکات
- شما تنها مجاز به اعمال تغییر در فایلهای
Editor.js
،Node.js
،reducers/index.js
هستید. - پس از اعمال تغییرات، پروژه را zip کرده و ارسال کنید.
دقت کنید که پوشهی
node_modules
در فایل ارسالی نباشد.
ارسال پاسخ برای این سؤال