欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在React中使用SVG的幾種方式

 更新時(shí)間:2024年11月27日 08:26:04   作者:窗邊的anini  
在React中,SVG(Scalable?Vector?Graphics)的使用非常普遍,因?yàn)樗鼈兲峁┝丝缮炜s的矢量圖形,這對(duì)于現(xiàn)代Web應(yīng)用來(lái)說(shuō)是非常重要的,以下是幾種常見(jiàn)的在React中使用SVG的方法,每種方法都有其特定的用例和最佳實(shí)踐,需要的朋友可以參考下

一個(gè) SVG 示例

<?xml version="1.0" encoding="UTF-8"?>
<svg width="1em" height="1em" fill="currentColor" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <title>heart</title>
  <path d="M923 283.6c-13.4-31.1-32.6-58.9-56.9-82.8-24.3-23.8-52.5-42.4-84-55.5-32.5-13.5-66.9-20.3-102.4-20.3-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5-24.4 23.9-43.5 51.7-56.9 82.8-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3 0.1-35.3-7-69.6-20.9-101.9z" />
</svg>

作為圖像元素直接引用

最直接的方式是將SVG文件作為圖像元素<img>引入到React組件中,適用于不需要?jiǎng)討B(tài)修改SVG屬性的場(chǎng)景。

import React from 'react';
import HeartSvg from './heart.svg';

export function SvgImgDemo() {
  return <img src={HeartSvg} style={{ color: 'pink' }} />;
}

效果展示:

內(nèi)聯(lián)SVG

將SVG代碼直接寫(xiě)入組件中,這樣可以利用React的JSX語(yǔ)法對(duì)其進(jìn)行操作,適用于需要?jiǎng)討B(tài)修改SVG屬性的場(chǎng)景。

import React from 'react';

export function SvgDemo() {
  return (
    <svg width="1em" height="1em" fill="currentColor" viewBox="0 0 1024 1024">
      <path d="M923 283.6c-13.4-31.1-32.6-58.9-56.9-82.8-24.3-23.8-52.5-42.4-84-55.5-32.5-13.5-66.9-20.3-102.4-20.3-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5-24.4 23.9-43.5 51.7-56.9 82.8-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3 0.1-35.3-7-69.6-20.9-101.9z" />
    </svg>
  );
}

React SVG組件

將SVG封裝為React組件,這樣可以提供更多的交互性和可維護(hù)性,適用于需要復(fù)用SVG組件的場(chǎng)景。

import React from 'react';

export const HeartIcon = () => (
  <svg width="1em" height="1em" fill="currentColor" viewBox="0 0 1024 1024">
    <path d="M923 283.6c-13.4-31.1-32.6-58.9-56.9-82.8-24.3-23.8-52.5-42.4-84-55.5-32.5-13.5-66.9-20.3-102.4-20.3-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5-24.4 23.9-43.5 51.7-56.9 82.8-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3 0.1-35.3-7-69.6-20.9-101.9z" />
  </svg>
);

export function SvgComponentDemo() {
  return <HeartIcon />;
}

使用SVG庫(kù)

使用像react-svg這樣的庫(kù)可以更簡(jiǎn)單地加載和使用SVG文件,適用于需要處理大量SVG文件的場(chǎng)景。

import React from 'react';
import { ReactSVG } from 'react-svg';

export const ReactSvgComp = () => <ReactSVG src="heart.svg" />;

利用 Antd 的 Icon 組件封裝自定義圖標(biāo)

Ant Design 的 Icon 組件提供了一種封裝自定義圖標(biāo)的方法,適用于需要或者已經(jīng)引入了 Ant Design 庫(kù)的項(xiàng)目。

import React from 'react';
import Icon from '@ant-design/icons';
import { CustomIconComponentProps } from '@ant-design/icons/lib/components/Icon';

const HeartSvgComp = () => (
  <svg width="1em" height="1em" fill="currentColor" viewBox="0 0 1024 1024">
    <path d="M923 283.6c-13.4-31.1-32.6-58.9-56.9-82.8-24.3-23.8-52.5-42.4-84-55.5-32.5-13.5-66.9-20.3-102.4-20.3-49.3 0-97.4 13.5-139.2 39-10 6.1-19.5 12.8-28.5 20.1-9-7.3-18.5-14-28.5-20.1-41.8-25.5-89.9-39-139.2-39-35.5 0-69.9 6.8-102.4 20.3-31.4 13-59.7 31.7-84 55.5-24.4 23.9-43.5 51.7-56.9 82.8-13.9 32.3-21 66.6-21 101.9 0 33.3 6.8 68 20.3 103.3 11.3 29.5 27.5 60.1 48.2 91 32.8 48.9 77.9 99.9 133.9 151.6 92.8 85.7 184.7 144.9 188.6 147.3l23.7 15.2c10.5 6.7 24 6.7 34.5 0l23.7-15.2c3.9-2.5 95.7-61.6 188.6-147.3 56-51.7 101.1-102.7 133.9-151.6 20.7-30.9 37-61.5 48.2-91 13.5-35.3 20.3-70 20.3-103.3 0.1-35.3-7-69.6-20.9-101.9z" />
  </svg>
);

export const IconSvg = (props: Partial<CustomIconComponentProps>) => (
  <Icon style={{ color: 'pink' }} component={HeartSvgComp} {...props} />
);

優(yōu)缺點(diǎn)對(duì)比

方法優(yōu)點(diǎn)缺點(diǎn)
作為圖像元素直接引用- 簡(jiǎn)單直接
- 易于緩存和復(fù)用
- SVG代碼不能直接操作
- 不支持React的JSX語(yǔ)法
內(nèi)聯(lián)SVG- 支持React的JSX語(yǔ)法
- 可以動(dòng)態(tài)操作SVG屬性
- 文件體積可能增大
- 難以維護(hù)大型SVG代碼
React SVG組件- 提供更多的交互性和可維護(hù)性- 需要額外的組件封裝
- 可能增加構(gòu)建體積
使用SVG庫(kù)- 簡(jiǎn)化SVG的加載和使用
- 易于維護(hù)和更新
- 依賴外部庫(kù)
- 可能影響性能
利用Antd的Icon組件封裝自定義圖標(biāo)- 易于集成到Ant Design UI
- 風(fēng)格統(tǒng)一
- 僅限于Ant Design生態(tài)
- 需要Ant Design的依賴

補(bǔ)充:fill="currentColor"

fill="currentColor" 是一個(gè)SVG屬性,用于設(shè)置元素填充顏色(fill)的值為當(dāng)前文本顏色,即 currentColor。

具體解釋

  • fill屬性:指定SVG元素(例如 <path>, <circle>)的填充顏色。
  • currentColor值:這是一個(gè)特殊的CSS關(guān)鍵字,表示“使用當(dāng)前的文本顏色”。這樣,如果父元素的 color 樣式發(fā)生變化,SVG元素的填充顏色會(huì)自動(dòng)匹配。

使用示例

<div style="color: blue;">
  <svg width="100" height="100" viewBox="0 0 24 24">
    <path fill="currentColor" d="M12 2L2 22h20L12 2z"/>
  </svg>
</div>

在上面的例子中,<path> 元素的填充顏色會(huì)變成藍(lán)色,因?yàn)樗^承了父 <div> 的文本顏色 color: blue

優(yōu)勢(shì)

使用 fill="currentColor" 的一個(gè)主要好處是增強(qiáng)了SVG的靈活性和可重用性——無(wú)需修改SVG代碼本身就能通過(guò)外部CSS控制其顏色。

以上就是在React中使用SVG的幾種方式的詳細(xì)內(nèi)容,更多關(guān)于React使用SVG的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React自定義視頻全屏按鈕實(shí)現(xiàn)全屏功能

    React自定義視頻全屏按鈕實(shí)現(xiàn)全屏功能

    這篇文章主要介紹了React自定義視頻全屏按鈕實(shí)現(xiàn)全屏功能,通過(guò)繪制全屏按鈕,并綁定點(diǎn)擊事件,編寫(xiě)點(diǎn)擊事件,通過(guò)實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • 解決React報(bào)錯(cuò)Unexpected default export of anonymous function

    解決React報(bào)錯(cuò)Unexpected default export of an

    這篇文章主要為大家介紹了React報(bào)錯(cuò)Unexpected default export of anonymous function解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • React中useEffect原理的代碼簡(jiǎn)單實(shí)現(xiàn)詳解

    React中useEffect原理的代碼簡(jiǎn)單實(shí)現(xiàn)詳解

    React的useEffect鉤子是React函數(shù)組件中處理副作用,本文將通過(guò)一個(gè)簡(jiǎn)單的例子解釋如何用代碼實(shí)現(xiàn)useEffect的基本原理,感興趣的小伙伴可以了解下
    2023-12-12
  • antd4里table滾動(dòng)的實(shí)現(xiàn)

    antd4里table滾動(dòng)的實(shí)現(xiàn)

    本文主要介紹了antd4里table滾動(dòng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 詳解React如何實(shí)現(xiàn)代碼分割Code Splitting

    詳解React如何實(shí)現(xiàn)代碼分割Code Splitting

    這篇文章主要為大家介紹了React如何實(shí)現(xiàn)代碼分割Code Splitting示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • react+antd4實(shí)現(xiàn)優(yōu)化大批量接口請(qǐng)求

    react+antd4實(shí)現(xiàn)優(yōu)化大批量接口請(qǐng)求

    這篇文章主要為大家詳細(xì)介紹了如何使用react hooks + antd4實(shí)現(xiàn)大批量接口請(qǐng)求的前端優(yōu)化,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-02-02
  • react-router-dom v6版本跳轉(zhuǎn)路徑的實(shí)現(xiàn)方法

    react-router-dom v6版本跳轉(zhuǎn)路徑的實(shí)現(xiàn)方法

    這篇文章主要介紹了react-router-dom v6版本跳轉(zhuǎn)路徑的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React useEffect使用教程

    React useEffect使用教程

    useEffect是react v16.8新引入的特性。我們可以把useEffect hook看作是componentDidMount、componentDidUpdate、componentWillUnmounrt三個(gè)函數(shù)的組合
    2022-10-10
  • React圖片壓縮上傳統(tǒng)一處理方式

    React圖片壓縮上傳統(tǒng)一處理方式

    這篇文章主要介紹了React圖片壓縮上傳統(tǒng)一處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • React中useEffect 與 useLayoutEffect的區(qū)別

    React中useEffect 與 useLayoutEffect的區(qū)別

    本文主要介紹了React中useEffect與useLayoutEffect的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07

最新評(píng)論