ரியாக்ட் பல-நிலை படிவங்களில் சக்திவாய்ந்த, முற்போக்கான சரிபார்ப்பைத் திறக்கவும். தடையற்ற, சர்வர்-ஒருங்கிணைந்த பயனர் அனுபவத்திற்காக useFormState ஹூக்கை எவ்வாறு பயன்படுத்துவது என்பதை அறியுங்கள்.
ரியாக்ட் useFormState சரிபார்ப்பு இயந்திரம்: பல-நிலை படிவ சரிபார்ப்பில் ஒரு ஆழமான பார்வை
நவீன வலை மேம்பாட்டு உலகில், உள்ளுணர்வு மற்றும் வலுவான பயனர் அனுபவங்களை உருவாக்குவது மிக முக்கியம். பயனர் தொடர்புகளின் முதன்மை நுழைவாயிலான படிவங்களில் இது மிகவும் முக்கியமானதாகும். எளிய தொடர்பு படிவங்கள் நேரடியானவை என்றாலும், பயனர் பதிவு வழிகாட்டிகள், இ-காமர்ஸ் செக்அவுட்கள் அல்லது விரிவான உள்ளமைவு பேனல்கள் போன்ற பல-நிலை படிவங்களில் சிக்கலானது அதிகரிக்கிறது. இந்த பல-படி செயல்முறைகள் நிலை மேலாண்மை, சரிபார்ப்பு மற்றும் தடையற்ற பயனர் ஓட்டத்தை பராமரிப்பதில் குறிப்பிடத்தக்க சவால்களை அளிக்கின்றன. வரலாற்று ரீதியாக, டெவலப்பர்கள் இந்த சிக்கலைக் கட்டுப்படுத்த சிக்கலான கிளையன்ட்-பக்க நிலை, கான்டெக்ஸ்ட் வழங்குநர்கள் மற்றும் மூன்றாம் தரப்பு நூலகங்களைக் கையாண்டுள்ளனர்.
ரியாக்ட்டின் `useFormState` ஹூக்கிற்குள் நுழையுங்கள். ரியாக்ட்டின் சர்வர்-ஒருங்கிணைந்த கூறுகளுக்கான பரிணாம வளர்ச்சியின் ஒரு பகுதியாக அறிமுகப்படுத்தப்பட்ட இந்த சக்திவாய்ந்த ஹூக், குறிப்பாக பல-நிலை படிவங்களின் சூழலில், படிவ நிலை மற்றும் சரிபார்ப்பை நிர்வகிப்பதற்கான ஒரு நேர்த்தியான, நேர்த்தியான தீர்வை வழங்குகிறது. சர்வர் செயல்களுடன் நேரடியாக ஒருங்கிணைப்பதன் மூலம், `useFormState` ஒரு வலுவான சரிபார்ப்பு இயந்திரத்தை உருவாக்குகிறது, இது குறியீட்டை எளிதாக்குகிறது, செயல்திறனை மேம்படுத்துகிறது மற்றும் முற்போக்கான மேம்பாட்டை ஆதரிக்கிறது. இந்த கட்டுரை உலகெங்கிலும் உள்ள டெவலப்பர்களுக்கு `useFormState` ஐப் பயன்படுத்தி ஒரு அதிநவீன பல-நிலை சரிபார்ப்பு இயந்திரத்தை எவ்வாறு உருவாக்குவது என்பதற்கான ஒரு விரிவான வழிகாட்டியை வழங்குகிறது, இது ஒரு சிக்கலான பணியை நிர்வகிக்கக்கூடிய மற்றும் அளவிடக்கூடிய செயல்முறையாக மாற்றுகிறது.
பல-நிலை படிவங்களின் நீடித்த சவால்
தீர்வுக்குள் செல்வதற்கு முன், பல-நிலை படிவங்களில் டெவலப்பர்கள் எதிர்கொள்ளும் பொதுவான வலி புள்ளிகளைப் புரிந்துகொள்வது அவசியம். இந்த சவால்கள் அற்பமானவை அல்ல, மேலும் வளர்ச்சி நேரம் முதல் இறுதி-பயனர் அனுபவம் வரை அனைத்தையும் பாதிக்கலாம்.
- நிலை மேலாண்மை சிக்கலானது: ஒரு பயனர் படிகளுக்கு இடையில் செல்லும்போது தரவை எவ்வாறு நிலைநிறுத்துவது? நிலை ஒரு பெற்றோர் கூறுகளிலோ, ஒரு உலகளாவிய கான்டெக்ஸ்டிலோ அல்லது உள்ளூர் சேமிப்பகத்திலோ இருக்க வேண்டுமா? ஒவ்வொரு அணுகுமுறைக்கும் அதன் வர்த்தக பரிமாற்றங்கள் உள்ளன, இது பெரும்பாலும் ப்ராப்-டிரில்லிங் அல்லது சிக்கலான நிலை ஒத்திசைவு தர்க்கத்திற்கு வழிவகுக்கிறது.
- சரிபார்ப்பு தர்க்கத்தின் துண்டு துண்டானது: சரிபார்ப்பு எங்கே நிகழ வேண்டும்? இறுதியில் எல்லாவற்றையும் சரிபார்ப்பது ஒரு மோசமான பயனர் அனுபவத்தை வழங்குகிறது. ஒவ்வொரு படியிலும் சரிபார்ப்பது நல்லது, ஆனால் இதற்கு கிளையன்ட்டிலும் (உடனடி கருத்துக்கு) மற்றும் சர்வரிலும் (பாதுகாப்பு மற்றும் தரவு ஒருமைப்பாட்டிற்காக) துண்டு துண்டான சரிபார்ப்பு தர்க்கத்தை எழுத வேண்டும்.
- பயனர் அனுபவத் தடைகள்: ஒரு பயனர் தங்கள் தரவை இழக்காமல் படிகளுக்கு முன்னும் பின்னுமாக செல்ல முடியும் என்று எதிர்பார்க்கிறார். அவர்கள் தெளிவான, சூழல் சார்ந்த பிழை செய்திகளையும் உடனடி கருத்தையும் எதிர்பார்க்கிறார்கள். இந்த திரவ அனுபவத்தை செயல்படுத்துவது குறிப்பிடத்தக்க கொதிகலன் குறியீட்டை உள்ளடக்கியிருக்கலாம்.
- சர்வர்-கிளையன்ட் நிலை ஒத்திசைவு: உண்மையின் இறுதி ஆதாரம் பொதுவாக சர்வர் ஆகும். கிளையன்ட்-பக்க நிலையை சர்வர்-பக்க சரிபார்ப்பு விதிகள் மற்றும் வணிக தர்க்கத்துடன் சரியாக ஒத்திசைப்பது ஒரு நிலையான போராட்டம், இது பெரும்பாலும் நகல் குறியீடு மற்றும் சாத்தியமான முரண்பாடுகளுக்கு வழிவகுக்கிறது.
இந்த சவால்கள் மிகவும் ஒருங்கிணைந்த, ஒத்திசைவான அணுகுமுறையின் தேவையை எடுத்துக்காட்டுகின்றன—கிளையன்ட்டிற்கும் சர்வருக்கும் இடையிலான இடைவெளியைக் குறைக்கும் ஒன்று. இதுவே `useFormState` பிரகாசிக்கும் இடம்.
`useFormState`-ஐ உள்ளிடவும்: படிவங்களைக் கையாள்வதற்கான ஒரு நவீன அணுகுமுறை
`useFormState` ஹூக் ஒரு படிவச் செயலின் முடிவின் அடிப்படையில் புதுப்பிக்கப்படும் படிவ நிலையை நிர்வகிக்க வடிவமைக்கப்பட்டுள்ளது. இது கிளையன்ட்டில் ஜாவாஸ்கிரிப்ட் இயக்கப்பட்டிருந்தாலும் இல்லாவிட்டாலும் தடையின்றி செயல்படும் முற்போக்கான மேம்படுத்தப்பட்ட பயன்பாடுகளுக்கான ரியாக்ட்டின் பார்வையின் ஒரு மூலக்கல்லாகும்.
`useFormState` என்றால் என்ன?
அதன் மையத்தில், `useFormState` என்பது ஒரு ரியாக்ட் ஹூக் ஆகும், இது இரண்டு வாதங்களை எடுக்கும்: ஒரு சர்வர் செயல்பாடு மற்றும் ஒரு ஆரம்ப நிலை. இது இரண்டு மதிப்புகளைக் கொண்ட ஒரு வரிசையைத் திருப்புகிறது: படிவத்தின் தற்போதைய நிலை மற்றும் உங்கள் `
);
}
படி 1: தனிப்பட்ட தகவல்களைப் பெறுதல் மற்றும் சரிபார்த்தல்
இந்த படியில், `name` மற்றும் `email` புலங்களை மட்டுமே சரிபார்க்க விரும்புகிறோம். எந்த சரிபார்ப்பு தர்க்கத்தை இயக்க வேண்டும் என்று எங்கள் சர்வர் செயலுக்குச் சொல்ல மறைக்கப்பட்ட `_step` உள்ளீட்டைப் பயன்படுத்துவோம்.
// Step1.jsx கூறு
{state.errors.name} {state.errors.email}
export function Step1({ state }) {
return (
படி 1: தனிப்பட்ட தகவல்
{state.errors?.name &&
{state.errors?.email &&
);
}
இப்போது, படி 1 க்கான சரிபார்ப்பைக் கையாள எங்கள் சர்வர் செயலைப் புதுப்பிப்போம்.
// actions.js (புதுப்பிக்கப்பட்டது)
// ... (இறக்குமதிகள் மற்றும் ஸ்கீமா வரையறை)
export async function onbordingAction(prevState, formData) {
// ... (படிவத் தரவைப் பெறுதல்)
const step = Number(formData.get('_step'));
if (step === 1) {
const validatedFields = schema.pick({ name: true, email: true }).safeParse({ name, email });
if (!validatedFields.success) {
return {
...currentState,
step: 1,
errors: validatedFields.error.flatten().fieldErrors,
};
}
// வெற்றி, அடுத்த படிக்குச் செல்லவும்
return {
...currentState,
step: 2,
errors: {},
};
}
// ... (மற்ற படிகளுக்கான தர்க்கம்)
}
பயனர் "அடுத்து" என்பதைக் கிளிக் செய்யும் போது, படிவம் சமர்ப்பிக்கப்படுகிறது. சர்வர் செயல் அது படி 1 என்பதை சரிபார்த்து, `name` மற்றும் `email` புலங்களை மட்டும் Zod-ன் `pick` முறையைப் பயன்படுத்தி சரிபார்த்து, ஒரு புதிய நிலையைத் திருப்புகிறது. சரிபார்ப்பு தோல்வியுற்றால், அது பிழைகளைத் திருப்பி படி 1-ல் இருக்கும். அது வெற்றி பெற்றால், அது பிழைகளை அழித்து, `step`-ஐ 2-க்கு புதுப்பிக்கிறது, இதனால் எங்கள் முக்கிய `OnboardingForm` கூறு `Step2` கூறை ரெண்டர் செய்கிறது.
படி 2: நிறுவன விவரங்களுக்கான முற்போக்கான சரிபார்ப்பு
இந்த அணுகுமுறையின் அழகு என்னவென்றால், படி 1-ல் இருந்து நிலை தானாகவே கொண்டு செல்லப்படுகிறது. அடுத்த படிவ சமர்ப்பிப்பில் அது சேர்க்கப்படுவதற்காக அதை மறைக்கப்பட்ட புலங்களில் ரெண்டர் செய்ய வேண்டும்.
// Step2.jsx கூறு
{state.errors.companyName} {state.errors.role}
export function Step2({ state }) {
return (
படி 2: நிறுவன விவரங்கள்
{/* முந்தைய படியிலிருந்து தரவை நிலைநிறுத்துங்கள் */}
{state.errors?.companyName &&
{state.errors?.role &&
);
}
மேலும் படி 2-ஐ கையாள சர்வர் செயலைப் புதுப்பிக்கிறோம்.
// actions.js (புதுப்பிக்கப்பட்டது)
// ...
if (step === 2) {
const validatedFields = schema.pick({ companyName: true, role: true }).safeParse({ companyName, role });
if (!validatedFields.success) {
return {
...currentState,
step: 2,
errors: validatedFields.error.flatten().fieldErrors,
};
}
// வெற்றி, இறுதி மதிப்பாய்வுக்குச் செல்லவும்
return {
...currentState,
step: 3,
errors: {},
};
}
// ...
தர்க்கம் படி 1-க்கு ஒத்ததாக உள்ளது, ஆனால் இது படி 2-க்கான புலங்களைக் குறிவைக்கிறது. `useFormState` ஹூக் தடையின்றி மாற்றத்தை நிர்வகிக்கிறது, எல்லாத் தரவையும் பாதுகாத்து, ஒரு சுத்தமான, முற்போக்கான சரிபார்ப்பு ஓட்டத்தை வழங்குகிறது.
படி 3: இறுதி மதிப்பாய்வு மற்றும் சமர்ப்பிப்பு
இறுதிப் படியில், பயனர் மதிப்பாய்வு செய்வதற்காக சேகரிக்கப்பட்ட எல்லாத் தரவையும் காட்டுகிறோம். இறுதி சமர்ப்பிப்பு, தரவை தரவுத்தளத்தில் சேமிப்பதற்கு முன் அனைத்து புலங்களின் விரிவான சரிபார்ப்பைத் தூண்டும்.
// Step3.jsx கூறு
{state.message} {state.message}
export function Step3({ state }) {
return (
படி 3: விவரங்களை உறுதிப்படுத்தவும்
{state.message && state.message.startsWith('வெற்றி') &&
{state.message && state.message.startsWith('பிழை') &&
);
}
இறுதி சர்வர் செயல் தர்க்கம் ஒரு முழுமையான சரிபார்ப்பு மற்றும் இறுதி வணிக தர்க்கத்தைச் செய்கிறது.
// actions.js (இறுதிப் பதிப்பு)
// ...
if (step === 3) {
// இறுதி, முழு சரிபார்ப்பு
const validatedFields = schema.safeParse({ name, email, companyName, role });
if (!validatedFields.success) {
// படி-படியான சரிபார்ப்பு சரியாக இருந்தால் இது நடக்கக்கூடாது, ஆனால் ஒரு நல்ல பாதுகாப்பு
return {
...currentState,
step: 1, // பயனரை பிழைகளுடன் முதல் படிக்குத் திருப்பி அனுப்பவும்
errors: validatedFields.error.flatten().fieldErrors,
message: 'பிழை: தவறான தரவு கண்டறியப்பட்டது. தயவுசெய்து மதிப்பாய்வு செய்யவும்.'
};
}
try {
// console.log('தரவுத்தளத்தில் சமர்ப்பிக்கப்படுகிறது:', validatedFields.data);
// await saveToDatabase(validatedFields.data);
return { message: 'வெற்றி! உங்கள் உள்நுழைவு முடிந்தது.', step: 4 }; // ஒரு இறுதி வெற்றிப் படி
} catch (dbError) {
return { ...currentState, step: 3, message: 'பிழை: தரவைச் சேமிக்க முடியவில்லை.' };
}
}
// ...
இதன் மூலம், `useFormState` ஹூக்கால் சுத்தமாக ஒருங்கிணைக்கப்பட்ட, முற்போக்கான, சர்வர்-அதிகாரப்பூர்வ சரிபார்ப்புடன் ஒரு முழுமையான, வலுவான, பல-நிலை படிவம் நம்மிடம் உள்ளது.
உலகத் தரம் வாய்ந்த பயனர் அனுபவத்திற்கான மேம்பட்ட உத்திகள்
ஒரு செயல்பாட்டு படிவத்தை உருவாக்குவது ஒரு விஷயம்; அதைப் பயன்படுத்துவதை ஒரு மகிழ்ச்சியாக மாற்றுவது மற்றொரு விஷயம். உங்கள் பல-நிலை படிவங்களை உயர்த்த சில மேம்பட்ட நுட்பங்கள் இங்கே உள்ளன.
வழிசெலுத்தலை நிர்வகித்தல்: முன்னும் பின்னுமாக நகர்தல்
எங்கள் தற்போதைய தர்க்கம் முன்னோக்கி மட்டுமே நகர்கிறது. பயனர்களைத் திரும்பிச் செல்ல அனுமதிக்க, நாம் ஒரு எளிய `type="submit"` பொத்தானைப் பயன்படுத்த முடியாது. அதற்குப் பதிலாக, கிளையன்ட்-பக்க கூறின் நிலையில் படியை நிர்வகித்து, முன்னோக்கி முன்னேற்றத்திற்கு மட்டுமே படிவச் செயலைப் பயன்படுத்துவோம். இருப்பினும், சர்வர்-மைய மாதிரியுடன் ஒட்டிக்கொள்ளும் ஒரு எளிய அணுகுமுறை, "பின் செல்" பொத்தானைக் கொண்டிருப்பதாகும், இது படிவத்தைச் சமர்ப்பிக்கிறது ஆனால் வேறு நோக்கத்துடன்.
// ஒரு படி கூறுகளில்...
// சர்வர் செயலில்...
const intent = formData.get('intent');
if (intent === 'back') {
return { ...currentState, step: step - 1, errors: {} };
}
`useFormStatus` உடன் உடனடி கருத்துக்களை வழங்குதல்
`useFormStatus` ஹூக் அதே `
// SubmitButton.jsx
'use client';
import { useFormStatus } from 'react-dom';
export function SubmitButton({ text }) {
const { pending } = useFormStatus();
return (
{pending ? 'சமர்ப்பிக்கப்படுகிறது...' : text}
);
}
பின்னர் நீங்கள் உங்கள் படி கூறுகளில் ஒரு நிலையான `
அளவிடுதலுக்காக உங்கள் சர்வர் செயலைக் கட்டமைத்தல்
உங்கள் படிவம் வளரும்போது, சர்வர் செயலில் உள்ள `if/else if` சங்கிலி громоздким ஆகலாம். சிறந்த அமைப்புக்கு ஒரு `switch` கூற்று அல்லது ஒரு மாடுலர் முறை பரிந்துரைக்கப்படுகிறது.
// ஒரு switch கூற்றுடன் actions.js
switch (step) {
case 1:
// படி 1 சரிபார்ப்பைக் கையாளவும்
break;
case 2:
// படி 2 சரிபார்ப்பைக் கையாளவும்
break;
// ... ইত্যাদি
}
அணுகல்தன்மை (a11y) பேச்சுவார்த்தைக்குட்பட்டது அல்ல
ஒரு உலகளாவிய பார்வையாளர்களுக்கு, அணுகல்தன்மை அவசியம். உங்கள் படிவங்கள் அணுகக்கூடியவை என்பதை உறுதிப்படுத்த:
- பிழைகள் உள்ள உள்ளீட்டு புலங்களில் `aria-invalid="true"` பயன்படுத்துதல்.
- `aria-describedby` ஐப் பயன்படுத்தி பிழை செய்திகளை உள்ளீடுகளுடன் இணைத்தல்.
- ஒரு சமர்ப்பிப்புக்குப் பிறகு, குறிப்பாக பிழைகள் தோன்றும் போது, ஃபோகஸை சரியான முறையில் நிர்வகித்தல்.
- அனைத்து படிவக் கட்டுப்பாடுகளும் விசைப்பலகை மூலம் செல்லக்கூடியவை என்பதை உறுதி செய்தல்.
ஒரு உலகளாவிய பார்வை: சர்வதேசமயமாக்கல் மற்றும் `useFormState`
சர்வர்-உந்துதல் சரிபார்ப்பின் குறிப்பிடத்தக்க நன்மைகளில் ஒன்று சர்வதேசமயமாக்கல் (i18n) எளிதாகும். சரிபார்ப்புச் செய்திகள் இனி கிளையன்ட்டில் கடினக் குறியீடு செய்யப்படத் தேவையில்லை. சர்வர் செயல் பயனரின் விருப்பமான மொழியைக் கண்டறிந்து ( `Accept-Language` போன்ற ஹெட்டர்களிலிருந்து, ஒரு URL அளவுரு அல்லது பயனர் சுயவிவர அமைப்பிலிருந்து) அவர்களின் தாய்மொழியில் பிழைகளைத் திருப்ப முடியும்.
உதாரணமாக, சர்வரில் `i18next` போன்ற ஒரு நூலகத்தைப் பயன்படுத்தி:
// i18n உடன் சர்வர் செயல்
import { i18n } from 'your-i18n-config';
// ...
const t = await i18n.getFixedT(userLocale); // எ.கா., ஸ்பானிஷ் மொழிக்கு 'es'
const schema = z.object({
email: z.string().email(t('பிழைகள்.தவறான_மின்னஞ்சல்')),
});
இந்த அணுகுமுறை உலகெங்கிலும் உள்ள பயனர்கள் தெளிவான, புரிந்துகொள்ளக்கூடிய கருத்துக்களைப் பெறுவதை உறுதிசெய்கிறது, இது உங்கள் பயன்பாட்டின் உள்ளடக்கம் மற்றும் பயன்பாட்டினை வியத்தகு முறையில் மேம்படுத்துகிறது.
`useFormState` vs. கிளையன்ட்-பக்க நூலகங்கள்: ஒரு ஒப்பீட்டுப் பார்வை
இந்த முறை Formik அல்லது React Hook Form போன்ற நிறுவப்பட்ட நூலகங்களுடன் எவ்வாறு ஒப்பிடுகிறது? எது சிறந்தது என்பதல்ல, வேலைக்கு எது சரியானது என்பதே கேள்வி.
- கிளையன்ட்-பக்க நூலகங்கள் (Formik, React Hook Form): உடனடி கிளையன்ட்-பக்க கருத்து முதன்மையான முன்னுரிமையாக இருக்கும் சிக்கலான, அதிக ஊடாடும் படிவங்களுக்கு இவை சிறந்தவை. அவை படிவ நிலை, சரிபார்ப்பு மற்றும் சமர்ப்பிப்பை முழுவதுமாக உலாவியில் நிர்வகிப்பதற்கான விரிவான கருவிகளை வழங்குகின்றன. கிளையன்ட்டிற்கும் சர்வருக்கும் இடையில் சரிபார்ப்பு தர்க்கத்தின் நகல் அவற்றின் முக்கிய சவாலாக இருக்கலாம்.
- சர்வர் செயல்களுடன் `useFormState`: சர்வர் உண்மையின் இறுதி ஆதாரமாக இருக்கும் இடத்தில் இந்த அணுகுமுறை சிறந்து விளங்குகிறது. இது தர்க்கத்தை மையப்படுத்துவதன் மூலம் ஒட்டுமொத்த கட்டமைப்பை எளிதாக்குகிறது, தரவு ஒருமைப்பாட்டை உறுதி செய்கிறது மற்றும் முற்போக்கான மேம்பாட்டுடன் தடையின்றி செயல்படுகிறது. சரிபார்ப்புக்கு ஒரு நெட்வொர்க் ரவுண்ட்-ட்ரிப் தான் வர்த்தகம், இருப்பினும் நவீன உள்கட்டமைப்புடன், இது பெரும்பாலும் அற்பமானது.
ஒரு தரவுத்தளத்திற்கு எதிராக சரிபார்க்கப்பட வேண்டிய குறிப்பிடத்தக்க வணிக தர்க்கம் அல்லது தரவை உள்ளடக்கிய பல-நிலை படிவங்களுக்கு (எ.கா., ஒரு பயனர்பெயர் எடுக்கப்பட்டதா என்பதை சரிபார்ப்பது), `useFormState` முறை ஒரு நேரடியான மற்றும் குறைவான பிழை-பாதிப்புக்குள்ளான கட்டமைப்பை வழங்குகிறது.
முடிவுரை: ரியாக்டில் படிவங்களின் எதிர்காலம்
`useFormState` ஹூக் ஒரு புதிய API ஐ விட மேலானது; இது ரியாக்டில் நாம் படிவங்களை உருவாக்கும் விதத்தில் ஒரு தத்துவார்த்த மாற்றத்தைக் குறிக்கிறது. ஒரு சர்வர்-மைய மாதிரியை ஏற்றுக்கொள்வதன் மூலம், நாம் மிகவும் வலுவான, பாதுகாப்பான, அணுகக்கூடிய மற்றும் பராமரிக்க எளிதான பல-நிலை படிவங்களை உருவாக்க முடியும். இந்த முறை நிலை ஒத்திசைவு தொடர்பான முழு வகை பிழைகளையும் நீக்குகிறது மற்றும் சிக்கலான பயனர் ஓட்டங்களைக் கையாளுவதற்கான தெளிவான, அளவிடக்கூடிய கட்டமைப்பை வழங்குகிறது.
`useFormState` உடன் ஒரு சரிபார்ப்பு இயந்திரத்தை உருவாக்குவதன் மூலம், நீங்கள் நிலையை நிர்வகிப்பது மட்டுமல்ல; நீங்கள் நவீன வலை மேம்பாட்டின் கொள்கைகளின் மீது நிற்கும் ஒரு நெகிழ்வான, பயனர் நட்பு தரவு சேகரிப்பு செயல்முறையை உருவாக்குகிறீர்கள். ஒரு பன்முக, உலகளாவிய பார்வையாளர்களுக்காக பயன்பாடுகளை உருவாக்கும் டெவலப்பர்களுக்கு, இந்த சக்திவாய்ந்த ஹூக் உண்மையான உலகத் தரம் வாய்ந்த பயனர் அனுபவங்களை உருவாக்குவதற்கான அடித்தளத்தை வழங்குகிறது.