【React】在 React 项目中引入图片

import

javascript 复制代码
import React from 'react';
import myImage from './path/to/image.jpg';

function MyComponent() {
  return <img src={myImage} alt="description" />;
}

require(虽然现在比较少用)

javascript 复制代码
import React from 'react';

function MyComponent() {
  const myImage = require('./path/to/image.jpg');
  return <img src={myImage} alt="description" />;
}

直接使用图片的 URL

(适用于公共资源或外部链接)

javascript 复制代码
import React from 'react';

function MyComponent() {
  return <img src="https://example.com/path/to/image.jpg" alt="description" />;
}

如果要选择哪种方式更好,我个人推荐使用 import 语句。因为这种方式能够更好地集成到现代化的 JavaScript 打包工具(如 Webpack)中,提供诸如代码分割、缓存优化等功能。此外,import 语句更加符合 ES6+ 规范,使代码可读性和可维护性都有所提升。

其他

1)使用 CSS 背景图

css 复制代码
.background-image {
  background: url('./path/to/image.jpg');
}

在 CSS 模块中:可以通过样式绑定背景图片,适用于背景图片或装饰性小图标。

2)使用 CSS-in-JS 库 如果你在使用 styled-components、emotion 等 CSS-in-JS 库,也可以在 JavaScript 中直接定义样式:

javascript 复制代码
复制代码
import styled from 'styled-components';
import myImage from './path/to/image.jpg';

const ImageContainer = styled.div`
  background: url(${myImage}) no-repeat center center;
  width: 100px;
  height: 100px;
`;

3)结合 Webpack 加载器 Webpack 通常会配置文件加载器(如 file-loaderurl-loader),以便在引入图片时进行优化,具体配置可以参考 webpack 文档。

4)动态引入图片 有时我们需要根据某些条件动态引入图片,这种情况下可以使用 import() 动态导入:

javascript 复制代码
import React, { useState, useEffect } from 'react';

function MyComponent() {
  const [image, setImage] = useState(null);

  useEffect(() => {
    import('./path/to/image.jpg').then(img => {
      setImage(img.default);
    });
  }, []);

  if (!image) return <p>Loading...</p>;

  return <img src={image} alt="description" />;
}

5)SVGR 处理 SVG 如果处理的是 SVG 图像,可以将其作为 React 组件导入:

javascript 复制代码
import React from 'react';
import { ReactComponent as MySvg } from './path/to/image.svg';

function MyComponent() {
  return <MySvg />;
}
相关推荐
木斯佳2 分钟前
前端八股文面经大全:26届秋招滴滴校招前端一面面经-事件循环题解析
前端·状态模式
光影少年22 分钟前
react状态管理都有哪些及优缺点和应用场景
前端·react.js·前端框架
saber_andlibert2 小时前
TCMalloc底层实现
java·前端·网络
逍遥德2 小时前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
冻感糕人~2 小时前
【珍藏必备】ReAct框架实战指南:从零开始构建AI智能体,让大模型学会思考与行动
java·前端·人工智能·react.js·大模型·就业·大模型学习
程序员agions2 小时前
2026年,“配置工程师“终于死绝了
前端·程序人生
alice--小文子2 小时前
cursor-mcp工具使用
java·服务器·前端
晚霞的不甘2 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
小迷糊的学习记录2 小时前
0.1 + 0.2 不等于 0.3
前端·javascript·面试
梦帮科技3 小时前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json