गाइड
Vue कॉन्टैक्ट फ़ॉर्म (कोई बैकएंड नहीं चाहिए)
Vue क्लाइंट-साइड फ़्रेमवर्क है, लेकिन आप जो कॉन्टैक्ट फ़ॉर्म डिलीवर करते हैं उसे आपके पक्ष में बैकएंड की आवश्यकता नहीं है। किसी भी Vue टेम्पलेट में सादा HTML फ़ॉर्म action का उपयोग करें, या इनलाइन सफलता/त्रुटि UX के लिए <script setup> और fetch के साथ Vue 3 SFC।
सादा HTML फ़ॉर्म उपयोग करें
आपको API रूट की ज़रूरत नहीं है। फ़ॉर्म सीधे Formhook को POST करता है, और आपके फ़्रेमवर्क को सबमिशन छूना ही नहीं पड़ता।
<form action="https://formhook.app/f/YOUR_API_KEY" method="POST">
<label>
Email
<input type="email" name="email" required />
</label>
<label>
Message
<textarea name="message" required></textarea>
</label>
<!-- honeypot: bots fill this; humans don't see it -->
<input type="text" name="_gotcha" tabindex="-1" autocomplete="off" hidden />
<!-- optional: send users to a thank-you page after a native POST -->
<input type="hidden" name="_redirect" value="https://example.com/thanks" />
<button type="submit">Send</button>
</form>या Vue में fetch से सबमिट करें
इस संस्करण का उपयोग करें यदि आप पूर्ण पेज रीलोड के बिना क्लाइंट-साइड सफलता/त्रुटि अवस्थाएँ चाहते हैं।
<!-- src/components/ContactForm.vue -->
<script setup lang="ts">
import { ref } from "vue";
type Status = "idle" | "sending" | "ok" | "error";
const status = ref<Status>("idle");
async function onSubmit(e: Event) {
e.preventDefault();
status.value = "sending";
const form = e.target as HTMLFormElement;
const data = Object.fromEntries(new FormData(form));
const res = await fetch("https://formhook.app/f/YOUR_API_KEY", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data),
});
status.value = res.ok ? "ok" : "error";
if (res.ok) form.reset();
}
</script>
<template>
<p v-if="status === 'ok'">Thanks - we'll be in touch.</p>
<form v-else @submit="onSubmit">
<input type="email" name="email" placeholder="Email" required />
<textarea name="message" placeholder="Message" required />
<input type="text" name="_gotcha" tabindex="-1" hidden />
<button type="submit" :disabled="status === 'sending'">
{{ status === "sending" ? "Sending…" : "Send" }}
</button>
<p v-if="status === 'error'">Something went wrong. Please try again.</p>
</form>
</template>यह कैसे काम करता है
सादा HTML फ़ॉर्म किसी भी Vue टेम्पलेट में काम करता है - यह बस markup है। इनलाइन सफलता/त्रुटि प्रवाह के लिए, SFC स्निपेट <script setup> का उपयोग ref-समर्थित स्थिति state machine और formhook.app/f/YOUR_API_KEY को fetch कॉल के साथ करता है। JSON के रूप में सीरियलाइज़ Object.fromEntries(new FormData(form)) सबसे साफ़ payload आकार है; Formhook form-encoded और multipart भी स्वीकार करता है।
आगे क्या होता है
- सबमिशन एक सेकंड के भीतर आपके Formhook डैशबोर्ड में आता है।
- हर सक्षम डिवाइस पर पुश सूचना बजती है।
- डैशबोर्ड से सीधे उत्तर दें (Pro और इससे ऊपर) - ईमेल-भेजने की क्षमता के बिना SPA-only डिप्लॉयमेंट के लिए विशेष रूप से उपयोगी।
आज ही अपना Vue कॉन्टैक्ट फ़ॉर्म लॉन्च करें।
मुफ़्त साइन अप करें, फ़ॉर्म बनाएँ, API कुंजी पेस्ट करें। पाँच मिनट।
मुफ़्त में शुरू करेंमुफ़्त स्तर: 5 फ़ॉर्म · 250 सबमिशन/माह · क्रेडिट कार्ड नहीं चाहिए।
Vue कॉन्टैक्ट फ़ॉर्म - FAQ
- क्या मुझे इस Vue कॉन्टैक्ट फ़ॉर्म के लिए बैकएंड या Node सर्वर चाहिए?
- नहीं। फ़ॉर्म सीधे Formhook को POST करता है, इसलिए आपकी Vue ऐप शुद्ध स्थिर SPA रह सकती है। Vite के साथ बिल्ड करें, dist/ फ़ोल्डर को किसी भी CDN पर डिप्लॉय करें।
- क्या मैं इसे Pinia / Vue Router state के साथ उपयोग कर सकता हूँ?
- हाँ - स्निपेट एक स्व-समाहित SFC है, लेकिन आप स्थिति state को Pinia में उठा सकते हैं या सफलता के बाद अलग धन्यवाद रूट पर नेविगेट करने के लिए Vue Router का उपयोग कर सकते हैं।
- यदि मैं <script setup> के बजाय Options API का उपयोग करूँ?
- वही fetch पैटर्न methods.onSubmit हैंडलर में काम करता है data() { return { status: 'idle' } } के साथ। केवल सिंटैक्स अलग है - Formhook को परवाह नहीं कि आप किस Vue शैली का उपयोग करते हैं।
अन्य फ़्रेमवर्क के लिए गाइड
Migrating from Formspree? See how Formhook compares.