Url Loader,加载我的背景图片一次然后刷新页面后它无法出现

IT技术 javascript reactjs webpack next.js
2021-05-02 13:04:39

我使用 next.js 和 file-loader 和 url-loader 将图像加载到我的 React 组件中,如下所示:

import background from '@/assets/mountain-shot.jpg';
const Section = styled.section`
  background-color: #f3f3f3;
  background-image: url(${background});
  background-size: cover;
  background-position: center;

  box-shadow: inset 2px 33px 97px -21px rgba(0,0,0,0.75);
  position: relative;
`;

如您所见,我正在导入图像并将其输出到样式组件中。如果我删除背景图片,它会加载背景#f3f3f3,然后我放回背景图片,图片会加载。正是在这一点上,我进行了刷新,该块中的图像和所有其他样式都消失了。

我想这可能是我的 next.config 设置的问题,所以我将在下面粘贴:

config.module.rules.push({
  test: /\.(woff(2)?|ttf|eot|gif|png|jp(e*)g)(\?v=\d+\.\d+\.\d+)?$/,
  use: [
    {
      loader: 'url-loader',
      options: {
        limit: 8000, // Convert images < 8kb to base64 strings
        name: 'images/[hash]-[name].[ext]',
      },
    },
  ],
});

我们正在使用 Next.js 来做我们的 SSR,这可能值得一提。

当我控制台日志背景时,我在第一次加载时得到这个值: /_next/webpack/images/b3f1c5846e75c47d10b0fa02957ac1b4-mountain-shot.jpg

在样式消失的第二次加载中,我得到了完全相同的 url,但它没有出现。

** 更新 **

我现在注意到,当图像第一次出现时,您可以进行更改,它仍然可以查看。直到您执行消失的硬/软刷新后,它才真正生效。

1个回答

url 必须是字符串中的字符串:

 url("${background}");