导入 .svg 并调整 .svg 大小在 next.js 中使用样式组件

2024-01-25

我目前正在尝试将 .svg 导入 next.js 项目,但失败了。

我尝试以与 React 项目相同的方式导入 .svg,创建了typing.d.ts 并导入 svg 之类的组件。但这不起作用。

declare module '*.svg' {
  import React from 'react';

  const src: string;

  export const ReactComponent: React.FunctionComponent<React.SVGProps<SVGSVGElement>>;
  export default src;
}

导入 svg 示例

  • 我使用 next.js - 12.1 和 styled-components - 5.3.3
  • 示例-导入-svg https://stackblitz.com/edit/nextjs-bubipe?file=package.json

我需要的?

  • Import .svg文件并更改其宽度和高度。

有人遇到过同样的问题吗? 或者有人设法解决了吗?

谢谢


也许是一个解决方案。

  • next.js 中的默认选项removeViewBox is true。如果你改变.svgheight or width视图框来自.svg将重置为默认值。
  • 如果您在您的next.config.jswebpack 和设置removeViewBox to false.svg 调整大小开始工作。

一个工作示例:stackblitz-调整大小-svg-next.js https://stackblitz.com/edit/nextjs-mbppty?file=next.config.js

  webpack(config) {
    config.module.rules.push({
      loader: '@svgr/webpack',
      options: {
        prettier: false,
        svgo: true,
        svgoConfig: {
          plugins: [
            {
              name: 'preset-default',
              params: {
                overrides: { removeViewBox: false },
              },
            },
          ],
        },
        titleProp: true,
      },
      test: /\.svg$/,
    });

    return config;
  },

如果你有在.babelrc set "inline-react-svg"这个解决方案不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导入 .svg 并调整 .svg 大小在 next.js 中使用样式组件 的相关文章

随机推荐