ホームページ  >  記事  >  ウェブフロントエンド  >  React Native プロジェクトでの SVG ファイルのインポート: 包括的なガイド

React Native プロジェクトでの SVG ファイルのインポート: 包括的なガイド

王林
王林オリジナル
2024-07-24 14:12:53717ブラウズ

Importing SVG Files in React Native Projects: A Comprehensive Guide

React Native プロジェクトでの SVG ファイルの使用は、Web アプリケーションで使用するのと同じくらい簡単です。 React-native-svg-transformer ライブラリは、インポートされた SVG 画像を React コンポーネントに変換することでこれを可能にします。このガイドでは、React Native プロジェクトでの react-native-svg-transformer のインストール、構成、使用方法について説明します。

利点

  • 一貫性: React Native プロジェクトと Web プロジェクトの両方に同じ SVG ファイルを使用します。
  • 柔軟性: SVG ファイルを React コンポーネントとして簡単にインポートして使用できます。

段階的なインストールと構成

ステップ1:react-native-svgライブラリをインストールする

まず、react-native-svg ライブラリがインストールされていることを確認してください。このライブラリは、React Native で SVG 画像をレンダリングするために必要なコンポーネントを提供します。

インストールするには、次のコマンドを実行します:

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 v0.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 v0.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 モジュールを使用した React Native プロジェクト

expo-cli を使用せずに Expo モジュールを使用するプロジェクトの場合、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.FC981cdbd8ae5a6d67f095ee0236cff3c4;
  export default content;
}

使用法

インストールと構成後、他のコンポーネントと同様に、SVG ファイルを React コンポーネントにインポートして使用できます。

例:

  1. SVG ファイルをインポートします:

    import Logo from "./logo.svg";
    
  2. SVG をコンポーネントとして使用します:

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

追加リソース

  • デモプロジェクト:
    • react-native-svg-example
    • react-native-svg-expo-example

このガイドに従うことで、SVG ファイルを React Native プロジェクトにシームレスに統合し、開発ワークフローを強化し、さまざまなプラットフォーム間での一貫性を維持できるようになります。

もっと記事を読むには私をフォローしてください!

以上がReact Native プロジェクトでの SVG ファイルのインポート: 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。