CSS 背景图像呈现为 url('undefined'); 即使我定义了它。(JSX)

IT技术 html css reactjs jsx
2021-05-23 00:25:25

这是我的着陆页应该如何加载:

在此处输入图片说明

这是我的着陆页加载方式:

在此处输入图片说明 在呈现错误的页面上,在顶部截断的 hero 代码使用以下代码加载背景图像就好了:

(react/ JSX):

<section className="hero-section" style={ { backgroundImage: "url('https://s3.us-east-2.amazonaws.com/housessoldeasily.com/img/bg.jpg')" }> </section>

但是当我对其他四个图像尝试相同的方法时:

<div className="propertie-item set-bg" style={ { backgroundImage: "url('https://s3.us-east-2.amazonaws.com/housessoldeasily.com/img/propertie/1.jpg')" } }></div>

它不加载。当我检查元素时,我看到:

<div class="propertie-item set-bg" style="background-image: url("undefined");"></div>

我确实在我的代码中定义了 URL,但由于某种原因它没有通过。

然而,当我查看网络选项卡时,所有的图像请求都收到了 200 个响应

在此处输入图片说明 真的不知道为什么它适用于英雄的背景图片而不适用于子类别。

您可以访问housessoldeasily.netlify.com 以获取该站点的工作静态版本。这不是网站的 React 版本。

这是背景图像加载正常的组件的 Github 链接:

https://github.com/jfny/custom-everything/blob/master/client/v1/src/components/homepage/HeroSection.js

这是一个组件的 Github 链接,我在其中尝试了完全相同的操作,但背景未加载:

https://github.com/jfny/custom-everything/blob/master/client/v1/src/components/homepage/PropertiesSection.js

如果有人有任何见解,将不胜感激。谢谢。

2个回答

@J。Doe,我知道你的问题了。值得向react团队提出问题以进行更多调试。但我的路线原因/修复如下。希望有帮助!

根本原因:

当一系列css类名有 时-,内联 url 设置为未定义。

解决方法:(以下之一)

  • 删除附加类set-bg
  • 替换-类名中的 。

示例 html

    <div className="col-md-6">
      <div className="propertie-item set_bg" style={ { backgroundImage: "url('https://s3.us-east-2.amazonaws.com/housessoldeasily.com/img/propertie/4.jpg')" } }>
        <div className="rent-notic">FOR Rent</div>
        <div className="propertie-info text-white">
          <div className="info-warp">
            <h5>339 N Oakhurst Dr Apt 303</h5>
            <p><i className="fa fa-map-marker" /> Beverly Hills, CA 90210</p>
          </div>
          <div className="price">$3000/month</div>
        </div>
      </div>
    </div>

CSS

.set_bg {
  background-repeat: no-repeat;
  background-size: cover;
  background-position: top center;

}

在此处输入图片说明

我不确定您是否是此模板的作者,我一直在使用此模板并尝试对其进行修改以使其适合我自己的使用。我遇到了和你一样的问题,如果你查看模板的包,在 js/main.js 中有一个 js 文件,打开它并查找“背景集”注释部分:

$('.set-bg').each(function() {
    var bg = $(this).data('setbg');
    $(this).css('background-image', 'url(' + bg + ')');
});

问题是当浏览器加载代码时,(function(){...})()即使在页面(html 文件)加载之前立即执行内部的任何内容,如果它发生(在这种情况下它总是发生),JavaScript 解释器将找不到任何 html 元素属于类“setbg”,因为没有 html 文件。

我所做的解决方案是将您需要的任何代码(不仅仅是“setbg”的实用程序)放入其中$(window).on('load',function(){...})并删除旧代码。

希望这可以帮助。