پیشتر در مطلب « React 16x - قسمت 33 - React Hooks - بخش 4 - useContext Hook » با هوک useContext آشنا شدیم. در این قسمت میخواهیم نکات تایپاسکریپتی آنرا بررسی کنیم. ایجاد UserContext
فرض کنید برای انتقال دادههای کاربر وارد شدهی به سیستم، از روش انتقال props از بالاترین کامپوننت موجود در component tree به پایینترین کامپوننت آن، نیاز است از Context استفاده کنیم. به همین جهت فایل جدید src\contexts\userContext.tsx را با ...
در این قسمت قصد داریم یک هوک سفارشی را ایجاد کرده و نوعهای آنرا توسط TypeScript مشخص کنیم. همچنین در این بین از هوک useEffect هم استفاده خواهیم کرد؛ هرچند این هوک، نکات تایپاسکریپتی خاصی را به همراه ندارد. ایجاد هوک سفارشی useClickOutside
برای این منظور فایل جدید src\components\useClickOutside.tsx را ایجاد کرده و به صورت زیر تکمیل میکنیم: import { useEffect } from "react";
const useClickOutside = (ref, handl ...
هوک استاندارد useReducer، یک نمونهی پیچیدهتر هوک useState، برای مدیریت حالت است؛ با ساختاری شبیه به Redux، اما تنها مخصوص یک کامپوننت. هوک useReducer شبیه به یک نسخهی کوچک و محلی Redux است. در این قسمت، نحوهی تعیین نوعهای قسمتهای مختلف آنرا با TypeScript بررسی میکنیم.
ایجاد کامپوننت جدید ReducerButtons
برای توضیح مفاهیم این قسمت، فایل جدید src\components\ReducerButtons.tsx را به همراه محتوای زیر ایجاد میکن ...
پس از بررسی روش تعیین نوعهای خواص props در قسمتهای قبل ، اکنون نوبت به بررسی روش تعیین نوعهای انواع React Hooks است. در این قسمت دو هوک پرکاربرد useState و useRef را بررسی میکنیم.
روش تعیین نوع useState Hook
برای این منظور در ابتدا فایل جدید src\components\Input.tsx را ایجاد کرده و به صورت زیر تکمیل میکنیم: import React, { useState } from "react";
export const Input = () => {
const [name, setN ...
در قسمت قبل ، نوع توابع ارسالی از طریق props را تعیین کردیم. فرض کنید در همان مثال میخواهیم بجای ارسال یک رشته به فراخوان کامپوننت تعریف شده، اصل رخداد واقع شده را ارسال کنیم. به همین جهت onClick دریافتی را مستقیما به رخداد onClick، نسبت میدهیم: export const Button = ({ onClick }: Props) => {
return <button onClick={onClick}>Click Me</button>;
};
در این حالت بلافاصله با خطای زیر مواجه خواهیم شد که عنوان م ...
در قسمت قبل با معرفی نوع props توسط TypeScript، مجبور به تکمیل اجباری تک تک آنها شدیم؛ اما در React میتوان props را به صورت اختیاری و یا با مقادیری پیشفرض نیز تعریف کرد.
روش تعیین props پیشفرض توسط TypeScript
اگر بخواهیم توسط روشهای خود React، مقادیر پیشفرض props را تعیین کنیم، میتوان از defaultProps به صورت زیر با تعریف یک شیء جاوا اسکریپتی از پیش مقدار دهی شده، استفاده کرد: Head.defaultProps = {
...
React به صورت پیشفرض از ES6 برای توسعهی برنامههای خودش استفاده میکند؛ اما استفادهی از TypeScript با پروژههای React، مزایای قابل توجهی را مانند type checking در زمان کامپایل برنامه، دسترسی به intellisense آنی، امکان refactoring بهتر را در اختیار توسعه دهنده قرار میدهد که نه فقط سرعت و سهولت توسعه را افزایش میدهند، بلکه از بروز بسیاری از خطاهای زمان اجرای برنامه نیز جلوگیری میکند.
ایجاد پروژههای React مبتنی بر ...
Custom Elements، دارای یک چرخه حیات میباشند. در طی این چرخه حیات، میتوان تعدادی متد خاص را به المان سفارشی خود اضافه کرد که به صورت خودکار توسط مرورگر فراخوانی میشوند. به این متدها Life-cycle C allbacks یا Custom Element Reactions نیز میگویند. برای درک بهتر چرخه حیات مذکور، به تکه کد زیر توجه نمائید: customElements.define("x-component", class extends HTMLElement {
constructor() {
super();
...
Web Components مجموعهای از تکنولوژیهایی میباشند که امکان ساخت المانهای سفارشی با قابلیت استفادهی مجدد و به همراه کپسولهسازی ساختار، استایل و عاملیت (Functionality) متناظر با المان ایجاد شده را در اختیار شما قرار میدهد. در این سری چند قسمتی، ابتدا روش ساخت Web Components را بدون استفاده از ابزار خاصی بررسی کرده و در ادامه با معرفی Stenciljs ، چند کامپوننت سفارشی را طراحی خواهیم کرد. سه تکنولوژی اصلی مورد استفاد ...
استفاده از Redux درون پروژههای React، به روشهای مختلفی قابل انجام است؛ یعنی محدودیتی از لحاظ نحوه چیدمان فایلها، تغییر state و نحوهی dispatch کردن action وجود ندارد. به عبارتی این آزادی عمل را خواهیم داشت تا خودمان سیمکشی پروژه را انجام دهیم؛ ولی مشکل اصلی اینجاست که نمیتوانیم مطمئن شویم روشی که پروژه را با آن ستاپ کردهایم آیا به عنوان یک best-practice محسوب میشود یا خیر. در نهایت خروجی را که خواهیم داشت، حجم انبوهی از کدهای boiler ...