همانطور که در مقدمهی قسمت قبل نیز عنوان شد، در این سری ابتدا کتابخانهی Redux را به صورت مجزایی از React بررسی میکنیم؛ چون در اصل، یک کتابخانهی مدیریت حالت عمومی است و وابستگی خاصی را به React ندارد و در بسیاری از برنامه و فریمورکهای دیگر نیز قابل استفادهاست. ایجاد یک برنامهی خالی React برای آزمایش توابع Redux
در اینجا برای بررسی توابع Redux، یک پروژهی جدید React را ایجاد میکنیم: > npm i -g creat ...
Redux و Mobx ، کتابخانههای کمکی هستند برای مدیریت حالت برنامههای پیچیدهی React. هرچند React به صورت توکار به همراه امکانات مدیریت حالت است، اما این کتابخانهها مزایای ویژهای را به آن اضافه میکنند. در این سری ابتدا کتابخانهی Redux را به صورت خالص و مجزای از React بررسی میکنیم. از این کتابخانه در برنامههای Angular و Ember هم میتوان استفاده کرد و به صورت اختصاصی برای React طراحی نشدهاست. سپس آنرا به برنامههای React متصل میکنی ...
در قسمت آخر این سری ، نگاهی خواهیم داشت به نحوهی توزیع برنامههای React و نکات مرتبط با آن.
افزودن متغیرهای محیطی
در برنامهی نمایش لیست فیلمهایی که تا قسمت 29 آنرا بررسی کردیم، از فایل src\config.json برای ذخیره سازی اطلاعات تنظیمات برنامه استفاده شد. هرچند این روش کار میکند اما بر اساس محیطهای مختلف توسعه، متغیر نیست. اغلب برنامهها باید بتوانند حداقل در سه محیط توسعه، آزمایش و تولید، بر اساس متغیرها و ت ...
در سری بررسی اعتبارسنجی و احراز هویت کاربران در React ، برای انتقال دادههای کاربر وارد شدهی به سیستم، از روش انتقال props، از بالاترین کامپوننت موجود در component tree، به پایینترین کامپوننت آن، به این نحو فرضی استفاده کردیم:
ابتدا شیء user، در بالاترین سطح، دریافت شده و به صفحهای خاص از طریق ویژگیهای props ارسال میشود: <Page user={user} />
سپس این کامپوننت Page، کامپوننت PageLayout را رندر میکند که آن نیز ...
در قسمتهای 22 تا 25 این سری، روش برقراری ارتباط با سرور را در برنامههای React، توسط کتابخانهی معروف Axios، بررسی کردیم. در این قسمت میخواهیم همان نکات را زمانیکه قرار است از کامپوننتهای تابعی، به همراه useState hook و useEffect hook استفاده کنیم، مرور نمائیم.
برپایی پیشنیازها
در اینجا نیز از همان برنامهای که در قسمت 30 ، برای بررسی مثالهای React hooks ایجاد کردیم، استفاده خواهیم کرد. فقط در آن، کتابخانه ...
در قسمت قبل ، با useState Hook آشنا شدیم. همچنین چندین مثال را در مورد نحوهی تعریف تکی و یا چندتایی آن در یک کامپوننت تابعی، با انواع و اقسام دادههای مختلف، بررسی کردیم؛ اما بهتر است از کدام حالت استفاده شود؟ آیا بهتر است به ازای هر خاصیت state، یکبار useState Hook جدیدی را تعریف کنیم و یا بهتر است همانند کامپوننتهای کلاسی، یک شیء کامل را به همراه چندین خاصیت، به یک تک useState Hook معرفی کنیم؟ پیاده سازی یک فرم لاگین با استفاده ...
با استفاده از React Hooks که در نگارش 16.7.0 آن معرفی شدند، میتوان در کامپوننتهای تابعی «تا پیش از این» بدون حالت، به state و تمام قابلیتهای دیگر React، دسترسی یافت. جهت یادآوری، در قسمت 8 این سری، کامپوننتهای تابعی بدون حالت را معرفی کردیم. تا پیش از معرفی React Hooks، برای ردیابی تغییرات مقادیری خاص، میبایستی آنها را در خاصیت state کامپوننتهایی که به صورت کلاس تعریف شده بودند، قرار میدادیم. بنابراین class components، تنها نوع ...
Blazor، چارچوبی است ارائه شده توسط مایکروسافت که به ما اجازه میدهد برنامههای تعاملی وب را با CSharp و بدون JavaScript بنویسیم. Blazor از اساس، Component based بوده و در برنامههایی که Backend نیز با CSharp نوشته شده باشد ( مثلا با ASP.NET Core) امکان به اشتراک گذاری کد بین کلاینت و سرور را نیز فراهم میکند. معماری Blazor معماریای مدرن است که در دل خود از امکانات CSharp نیز به خوبی بهره برده است تا بتوان پروژه را بهصورتی که قابلیت نگه ...
در این مقاله قصد داریم با استفاده از جاوااسکریپت خالص، یک برنامهی ساده را با الگوی MVC انجام دهیم. این برنامه، عملیات CRUD را پیاده سازی میکند و تنها به سه فایل index.html , script.js , style.css نیاز دارد و از هیچ کتابخانه یا فریم ورک دیگری در آن استفاده نمیکنیم. در الگوی MVC M مخفف Model میباشد و کار مدیریت دادهها را بر عهده دارد. V مخفف View میباشد و وظیفهی نمایش دادهها به کاربر را بر عهده دارد. C مخفف Control ...
در قسمت قبل ، دکمهی new movie را برای کاربران وارد نشدهی به سیستم، از صفحهی نمایش لیست فیلمها، مخفی کردیم. اما ... اگر آدرس http://localhost:3000/movies/new مستقیما در مرورگر وارد شود، هنوز هم برای عموم کاربران قابل دسترسی است.
روش محافظت از مسیریابیهای تعریف شدهی در برنامه
شبیه به روشی را که در قسمت قبل، برای انتقال شیء user، به مسیریابی کامپوننت Movies استفاده کردیم: <Route
path="/movies"
...