ryan-card-info-hooks
v1.0.9
Published
package containing reusable hooks for validating card information by ryan ๐ฆ
Downloads
8
Readme
ryan-card-info-hooks
๊ฐ๋จํ ์ค๋ช
ryan-card-info-hooks
์ ์นด๋ ์ ๋ณด ๊ด๋ จ ์
๋ ฅ๊ฐ์ ์ ํจ์ฑ ๊ฒ์ฆ์ ์ํ hook์ ๋ชจ์๋ ํจํค์ง์
๋๋ค. ์ด ํจํค์ง๋ ์นด๋ ๋ฒํธ, ์์ ์ ์ด๋ฆ, ๋ฐ๊ธ์ฌ, ๋ณด์ ์ฝ๋ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ค๋ฃฐ ์ ์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๊ฐ ์
๋ ฅ๊ฐ์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
์ค์น ๋ฐฉ๋ฒ
npm install ryan-card-info-hooks
์ฌ์ฉ ์์
์๋๋ ryan-card-info-hooks
ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋จํ ์์์
๋๋ค.
import {
useCardholderName,
useCardIssuer,
useCardNumber,
useCVC,
useExpiryDate,
usePasswordPrefix,
} from "ryan-card-info-hooks";
const MyComponent = () => {
const { value: cardholderName, onChange, onBlur, errorStatus: nameError } = useCardholderName();
const { value: cardIssuer, onChange, onBlur, errorStatus: issuerError } = useCardIssuer();
const { value: cardNumber, onChange, onBlur, errorStatus: cardNumberError } = useCardNumber();
const { value: cvc, onChange, onBlur, errorStatus: cvcError } = useCVC();
const {
month: { value: month },
year: { value: year },
} = useExpiryDate();
const { passwordPrefix, setPasswordPrefix, errorStatus: prefixError } = usePasswordPrefix();
// ์ค์ ์ปดํฌ๋ํธ์์ ๊ฐ hook์ ์ฌ์ฉํ์ฌ ์นด๋ ์ ๋ณด๋ฅผ ์
๋ ฅ๋ฐ๊ณ ,
// ์ ํจ์ฑ ๊ฒ์ฆ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์๋ฌ ๋ฉ์์ง๋ฅผ ํ์ํ๊ฑฐ๋ ๋ค๋ฅธ ๋์์ ์ํํ ์ ์์ต๋๋ค.
return <div>{/* ๊ฐ ์
๋ ฅ ํ๋ ๋ฐ ์๋ฌ ๋ฉ์์ง๋ฅผ ํ์ํ๋ JSX */}</div>;
};
hook ์ค๋ช
useCardholderName
: ์นด๋ ์์ ์ ์ด๋ฆ์ ๊ด๋ฆฌํ๋ hook์ ๋๋ค.useCardIssuer
: ์นด๋ ๋ฐ๊ธ์ฌ๋ฅผ ๊ด๋ฆฌํ๋ hook์ ๋๋ค.useCardNumber
: ์นด๋ ๋ฒํธ๋ฅผ ๊ด๋ฆฌํ๋ hook์ ๋๋ค.useCVC
: ์นด๋ ๋ณด์ ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๋ hook์ ๋๋ค.useExpiryDate
: ์นด๋ ๋ง๋ฃ ๋ ์ง๋ฅผ ๊ด๋ฆฌํ๋ hook์ ๋๋ค.usePasswordPrefix
: ์นด๋ ๋น๋ฐ๋ฒํธ ์ ๋ ์๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ hook์ ๋๋ค.
๋ฐํ ์ธํฐํ์ด์ค
interface UseCardholderNameReturn {
value: string;
errorStatus: IErrorStatus;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
}
interface UseCardIssuerReturn {
value: string;
errorStatus: IErrorStatus;
onChange: (e: React.ChangeEvent<HTMLSelectElement | HTMLInputElement>) => void;
}
export interface UseCardNumberReturn {
value: {
raw: string;
formatted: string[];
};
errorStatus: IErrorStatus;
cardBrand: CardBrand;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
}
interface UseCVCReturn {
value: string;
errorStatus: IErrorStatus;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
}
interface UseExpiryDateReturn {
month: {
value: string;
errorStatus: IErrorStatus;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
};
year: {
value: string;
errorStatus: IErrorStatus;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
};
}
interface UsePasswordPrefixReturn {
value: string;
errorStatus: IErrorStatus;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
}
๊ฐ๋ฐ ๋ฐ ๊ธฐ์ฌ
์ด ํจํค์ง๋ GitHub ์ ์ฅ์์์ ๊ด๋ฆฌ๋๊ณ ์์ต๋๋ค. ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค!
๋ผ์ด์ผ์ค
์ด ํจํค์ง๋ MIT ๋ผ์ด์ผ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค.