برنامه نویسی

وارد کردن فایل های SVG در پروژه های React Native: راهنمای جامع

استفاده از فایل های SVG در پروژه های React Native شما می تواند به همان سادگی استفاده از آنها در برنامه های وب باشد. این react-native-svg-transformer کتابخانه این کار را با تبدیل تصاویر SVG وارد شده به اجزای React امکان پذیر می کند. این راهنما شما را از طریق نصب، پیکربندی و استفاده از آن راهنمایی می کند react-native-svg-transformer در پروژه های React Native شما.

فواید

  • ثبات: از فایل های SVG یکسان برای پروژه های React Native و وب استفاده کنید.
  • انعطاف پذیری: به راحتی فایل های SVG را به عنوان اجزای React وارد کرده و از آنها استفاده کنید.

نصب و پیکربندی گام به گام

مرحله 1: نصب کنید react-native-svg کتابخانه

ابتدا مطمئن شوید که آن را دارید react-native-svg کتابخانه نصب شده است این کتابخانه اجزای لازم را برای رندر تصاویر SVG در React Native فراهم می کند.

برای نصب، اجرا کنید:

npm install react-native-svg
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یا

yarn add react-native-svg
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای دستورالعمل‌های نصب دقیق، به صفحه react-native-svg GitHub مراجعه کنید.

مرحله 2: نصب کنید react-native-svg-transformer کتابخانه

بعد، نصب کنید react-native-svg-transformer کتابخانه، که فایل های SVG شما را به اجزای React تبدیل می کند.

برای نصب، اجرا کنید:

npm install --save-dev react-native-svg-transformer
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یا

yarn add --dev react-native-svg-transformer
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 3: React Native Packager را پیکربندی کنید

بسته به تنظیمات شما (Expo یا React Native CLI)، پیکربندی متفاوت خواهد بود. در زیر تنظیمات برای محیط های مختلف آورده شده است:

برای Expo SDK v41.0.0 یا جدیدتر

خود را ایجاد یا به روز کنید metro.config.js فایل با پیکربندی زیر:

const { getDefaultConfig } = require("expo/metro-config");

module.exports = (() => {
  const config = getDefaultConfig(__dirname);

  const { transformer, resolver } = config;

  config.transformer = {
    ...transformer,
    babelTransformerPath: require.resolve("react-native-svg-transformer/expo")
  };
  config.resolver = {
    ...resolver,
    assetExts: resolver.assetExts.filter((ext) => ext !== "svg"),
    sourceExts: [...resolver.sourceExts, "svg"]
  };

  return config;
})();
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای React Native نسخه 0.72.1 یا جدیدتر

خود را ایجاد یا به روز کنید metro.config.js فایل با پیکربندی زیر:

const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config");

const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = defaultConfig.resolver;

/**
 * Metro configuration
 * https://reactnative.dev/docs/metro
 *
 * @type {import('metro-config').MetroConfig}
 */
const config = {
  transformer: {
    babelTransformerPath: require.resolve(
      "react-native-svg-transformer/react-native"
    )
  },
  resolver: {
    assetExts: assetExts.filter((ext) => ext !== "svg"),
    sourceExts: [...sourceExts, "svg"]
  }
};

module.exports = mergeConfig(defaultConfig, config);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برای React Native نسخه 0.59 یا جدیدتر

خود را ایجاد یا به روز کنید metro.config.js فایل با پیکربندی زیر:

const { getDefaultConfig } = require("metro-config");

module.exports = (async () => {
  const {
    resolver: { sourceExts, assetExts }
  } = await getDefaultConfig();
  return {
    transformer: {
      babelTransformerPath: require.resolve(
        "react-native-svg-transformer/react-native"
      )
    },
    resolver: {
      assetExts: assetExts.filter((ext) => ext !== "svg"),
      sourceExts: [...sourceExts, "svg"]
    }
  };
})();
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پروژه های بومی را با استفاده از ماژول های اکسپو واکنش نشان دهید

برای پروژه هایی با استفاده از ماژول های Expo بدون expo-cli، ممکن است لازم باشد مسیر ترانسفورماتور را برای استفاده صحیح از ترانسفورماتور React Native تنظیم کنید:

-require.resolve("react-native-svg-transformer")
+require.resolve("react-native-svg-transformer/react-native")
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از طرف دیگر، ترانسفورماتور Expo را مجبور کنید همیشه استفاده شود:

-require.resolve("react-native-svg-transformer")
+require.resolve("react-native-svg-transformer/expo")
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با استفاده از TypeScript

اگر پروژه شما از TypeScript استفاده می کند، باید ماژول را برای فایل های SVG اعلام کنید. موارد زیر را به خود اضافه کنید declarations.d.ts فایل (اگر وجود ندارد آن را ایجاد کنید):

declare module "*.svg" {
  import React from "react";
  import { SvgProps } from "react-native-svg";
  const content: React.FCSvgProps>;
  export default content;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استفاده

پس از نصب و پیکربندی، می‌توانید فایل‌های SVG را مانند هر کامپوننت دیگری در کامپوننت‌های React خود وارد و استفاده کنید.

مثال:

  1. فایل SVG را وارد کنید:

    import Logo from "./logo.svg";
    
  2. از SVG به عنوان یک جزء استفاده کنید:

    Logo width={120} height={40} />
    

منابع اضافی


با پیروی از این راهنما، باید بتوانید فایل‌های SVG را به‌طور یکپارچه در پروژه‌های React Native خود ادغام کنید، گردش کار توسعه خود را افزایش دهید و ثبات را در پلتفرم‌های مختلف حفظ کنید.

برای مقالات بیشتر من را دنبال کنید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا