مهارتهای لازم:
ReactJS
Redux
سینا سعیدی و سعید سینایی برای یادگرفتن redux از نمونههای سایت آن استفاده میکنند. در یکی از این نمونهها سبد خرید سادهای توضیح داده شده است. آنها میخواهد امکانات جدید به سبد خرید اضافه کند که شبیه سایت اسنپ فود شود! ظاهر کلی برنامه بدین صورت است:
پروژه اولیه را از اینجا دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است.
برای اجرای پروژه، باید NodeJS
و npm
را از قبل نصب کرده باشید.
like-snappfood
، دستور npm install
را برای نصب نیازمندیها اجرا کنید.npm start
را برای راهاندازی پروژه اجرا کنید.http://localhost:3000/
میتوانید نتیجه را ببینید.طراحی state برنامه بدین صورت است:
cart.addedIds
: آرایهای از id
محصولات که خریداری شدهاند.cart.money
: موجودی شخص برای خرید محصولcart.quantityById
: به ازای هر محصول تعداد خریداری شده را مشخص میکند.products.byId
: به ازای هر id
تعریف محصول را مشخص میکند.در این پروژه دو قسمت کلی وجود دارد وجود دارد:
ProductsContainer
: قسمتی که کاربر میتواند از آن یک محصول را به سبد خرید خود اضافه کند و به ازای هر محصول یک کارت در آن وجود دارد.CartContainer
: سبد خرید و محصولات موجود در سبد را مشخص میکند. همچنین دارای قسمتی برای نهایی کردن پرداخت میباشد.داخل فایل actions/index.js
اطلاعات مربوط به action های شما قرار خواهند گرفت.
در این پروژه پنج نوع action (عملیات) وجود دارد:
ADD_TO_CART
: با گرفتن id
یک محصول تنها در صورتی که از این محصول موجودی داشته باشیم و مقدار پول ما برای سبد خرید با محصول جدید مناسب باشد آن را به سبد محصول اضافه میکند.
این action در صورت کلیک بر روی Add to cart
و یا دکمه +
(سبد خرید) فراخوانی خواهد شد. باید یکی از تعداد موجودی محصول کاسته و به تعداد خریداری اضافه شود.TOGGLE_LIKE
: محصولی که در سبد خرید قرار دارد امکان ثبت به عنوان مورد علاقه را دارد. محصولی که ابتدا مورد علاقه شده باشد و از سبد خرید خارج شود پس از اضافه شدن مجدد بایستی مورد علاقه بماند.
این action با کلیک بر روی علامت ♥
در سبد محصول فعال میشود و درنهایت باید پس از مورد علاقه شدن کلاس is-active
به like-btn
اضافه شود.REMOVE_FROM_CART
: با گرفتن id
یک محصول آن را از سبد محصول حذف میکند..
این action با کلیک بر روی دکمه -
(در سبد خرید) بایستی اجرا شود و یکی از تعداد خریداری (درصورت وجود) کسر شود و به موجودی اضافه شود.REMOVE_ALL_FROM_CART
: تمام محصولات خریداری شده از یک id
را حذف میکند.
در صورت کلیک بر روی دکمه ×
تمام محصولات از یک id
حذف شود و به موجودی اضافه شود.CHECKOUT_REQUEST
: سبد خرید خالی شود و قیمت از موجودی کاسته شود.components/*
، containers/CartContainer.js
، reducers/cart.js
،reducers/product.js
و actions/index.js
هستید.node_modules
در فایل ارسالی نباشد.