شرح عملي/إنشاء محول عملات باستخدام React

إنشاء محول عملات باستخدام React

إنشاء محول عملات باستخدام React. دليل عملي يتضمن الشفرة والتخزين المؤقت وبيانات الحداثة.

ERexchangerate.dev·Sep 20, 2026·7 دقائق للقراءة

نفّذ التكامل على الخادم دون كشف بيانات الاعتماد، واحتفظ بالمصدر ووقت الرصد.

نقاط أساسية
احتفظ بمفتاح API على الخادم.
تحقق من رموز العملات والمبالغ.
خزّن الاستجابات الناجحة مؤقتًا.
اعرض المصدر ووقت الرصد.

الخطوة 1

نفّذ هذا النمط على الخادم، وتحقق من المدخلات، واحتفظ ببيانات الاستجابة.

مثال برمجيcopy
import { NextRequest, NextResponse } from "next/server";

export async function GET(request: NextRequest) {
  const { searchParams } = request.nextUrl;
  const from = searchParams.get("from")?.toUpperCase();
  const to = searchParams.get("to")?.toUpperCase();
  const amount = Number(searchParams.get("amount"));
  if (!from || !to || !Number.isFinite(amount) || amount < 0) {
    return NextResponse.json({ error: "invalid_input" }, { status: 400 });
  }

  const response = await fetch(
    `https://api.exchangerate.dev/v1/convert/${from}/${to}/${amount}`,
    {
      headers: { Authorization: `Bearer ${process.env.EXCHANGERATE_API_KEY}` },
      signal: AbortSignal.timeout(5000),
      next: { revalidate: 60 },
    },
  );
  return NextResponse.json(await response.json(), { status: response.status });
}

الخطوة 2

مثال برمجيcopy
"use client";

import { FormEvent, useState } from "react";

type ConversionResult = {
  converted: string;
  source: string;
  data_updated_at: string;
};

export function CurrencyConverter() {
  const [amount, setAmount] = useState("100");
  const [result, setResult] = useState<ConversionResult | null>(null);
  const [error, setError] = useState("");
  const [loading, setLoading] = useState(false);

  async function submit(event: FormEvent) {
    event.preventDefault();
    setLoading(true); setError("");
    try {
      const params = new URLSearchParams({ from: "USD", to: "EUR", amount });
      const response = await fetch(`/api/convert?${params}`);
      const body = await response.json();
      if (!response.ok) throw new Error(body.error ?? "conversion_failed");
      setResult(body);
    } catch (caught) {
      setError(caught instanceof Error ? caught.message : "conversion_failed");
    } finally { setLoading(false); }
  }

  return <form onSubmit={submit}>
    <input value={amount} onChange={(event) => setAmount(event.target.value)} inputMode="decimal" />
    <button disabled={loading}>{loading ? "Converting…" : "Convert"}</button>
    {error && <p role="alert">{error}</p>}
    {result && <output>{result.converted} EUR · {result.source} · {result.data_updated_at}</output>}
  </form>;
}

الخطوة 3

  • احتفظ بمفتاح API على الخادم.
  • تحقق من رموز العملات والمبالغ.
  • خزّن الاستجابات الناجحة مؤقتًا.
  • اعرض المصدر ووقت الرصد.
دليل
هذه أسعار إرشادية وليست أسعار تسوية.
ER
exchangerate.dev
أدلة عملية للمطورين الذين يستخدمون بيانات العملات.

تابع القراءة

دليلواجهة تحويل العملات للمطوريناقرأ دليلتحويل العملات في JavaScript وNode.jsاقرأ دليلAPI errors and response fieldsاقرأ