最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

reactjs - Some images do not load on first visit in React, require refresh to load correctly - Stack Overflow

programmeradmin3浏览0评论

I'm working on a React app and I'm experiencing an issue where some images do not load when navigating to a page. Specifically, on the ProductDetails page, the background image (/asset/img/bg/breadcrumb_bg.jpg) does not load when the page is first visited. However, once I refresh the page, the image loads correctly.

Here's the simplified code for the ProductDetails component:

 function ProductDetails() {
  return (
    <>
      {/* main-area */}
      <main>
        {/* breadcrumb-area */}
        <section
          className="breadcrumb-area breadcrumb-bg"
          data-background="/asset/img/bg/breadcrumb_bg.jpg"
        >
          <div className="container">
            <div className="row">
              <div className="col-12">
                <div className="breadcrumb-content text-center">
                  <h2>Shop Single</h2>
                  <nav aria-label="breadcrumb">
                    <ol className="breadcrumb">
                      <li className="breadcrumb-item">
                        <a href="index.html">Home</a>
                      </li>
                      <li
                        className="breadcrumb-item active"
                        aria-current="page"
                      >
                        Shop Details
                      </li>
                    </ol>
                  </nav>
                </div>
              </div>
            </div>
          </div>
        </section>
        {/* breadcrumb-area-end */}

      </main>
      {/* main-area-end */}
    </>
  );
}

export default ProductDetails;

App.js

import {Routes, Route} from 'react-router-dom'
import Header from './componetes/header';
import Footer from './componetes/footer';
import Home from './componetes/home';
import CategoryProducts from './componetes/categoryproducts';
import Category from './componetes/categories';
import AllProduct from './componetes/allProducts';
import ProductDetails from './componetes/productDetails';
import Checkout from './componetes/checkout';
import Cart from './componetes/cart';
import Register from './componetes/register';
import Login from './componetes/login';

function App() {
  return (
    <>

    <Header/>


  <Routes>
    <Route path="/" element={<Home /> } />
    <Route path="/category" element={<Category /> } />
    <Route path="/category/:slug/:id" element={<CategoryProducts /> } />
    <Route path="/allproducts" element={<AllProduct /> } />
    <Route path="/product/:slug/:id" element={<ProductDetails /> } />
    <Route path="/checkout" element={<Checkout /> } />
    <Route path="/cart" element={<Cart /> } />
    <Route path="/register" element={<Register /> } />
    <Route path="/login" element={<Login /> } />
  </Routes>

  <Footer/>

</>

    
  );
}

export default App;

Problem:

  • The background image (set via data-background="/asset/img/bg/breadcrumb_bg.jpg") doesn't load when I first navigate to the ProductDetails page.
  • After refreshing the page, the image loads correctly.
  • I have verified that the image exists in the public/asset/img/bg folder.

What I've Tried:

1.Ensured the image path is correct and the image exists in the public/asset/img/ folder.

2.Tried appending query parameters (?v=1) to the image URL to avoid caching issues.

3.Verified that there are no 404 errors in the browser's network tab.

Question: Why do the images fail to load on the first visit in my React app? How can I ensure the images are loaded immediately upon navigation without needing to refresh the page? Is this a problem with React Router or background image handling?

I'm working on a React app and I'm experiencing an issue where some images do not load when navigating to a page. Specifically, on the ProductDetails page, the background image (/asset/img/bg/breadcrumb_bg.jpg) does not load when the page is first visited. However, once I refresh the page, the image loads correctly.

Here's the simplified code for the ProductDetails component:

 function ProductDetails() {
  return (
    <>
      {/* main-area */}
      <main>
        {/* breadcrumb-area */}
        <section
          className="breadcrumb-area breadcrumb-bg"
          data-background="/asset/img/bg/breadcrumb_bg.jpg"
        >
          <div className="container">
            <div className="row">
              <div className="col-12">
                <div className="breadcrumb-content text-center">
                  <h2>Shop Single</h2>
                  <nav aria-label="breadcrumb">
                    <ol className="breadcrumb">
                      <li className="breadcrumb-item">
                        <a href="index.html">Home</a>
                      </li>
                      <li
                        className="breadcrumb-item active"
                        aria-current="page"
                      >
                        Shop Details
                      </li>
                    </ol>
                  </nav>
                </div>
              </div>
            </div>
          </div>
        </section>
        {/* breadcrumb-area-end */}

      </main>
      {/* main-area-end */}
    </>
  );
}

export default ProductDetails;

App.js

import {Routes, Route} from 'react-router-dom'
import Header from './componetes/header';
import Footer from './componetes/footer';
import Home from './componetes/home';
import CategoryProducts from './componetes/categoryproducts';
import Category from './componetes/categories';
import AllProduct from './componetes/allProducts';
import ProductDetails from './componetes/productDetails';
import Checkout from './componetes/checkout';
import Cart from './componetes/cart';
import Register from './componetes/register';
import Login from './componetes/login';

function App() {
  return (
    <>

    <Header/>


  <Routes>
    <Route path="/" element={<Home /> } />
    <Route path="/category" element={<Category /> } />
    <Route path="/category/:slug/:id" element={<CategoryProducts /> } />
    <Route path="/allproducts" element={<AllProduct /> } />
    <Route path="/product/:slug/:id" element={<ProductDetails /> } />
    <Route path="/checkout" element={<Checkout /> } />
    <Route path="/cart" element={<Cart /> } />
    <Route path="/register" element={<Register /> } />
    <Route path="/login" element={<Login /> } />
  </Routes>

  <Footer/>

</>

    
  );
}

export default App;

Problem:

  • The background image (set via data-background="/asset/img/bg/breadcrumb_bg.jpg") doesn't load when I first navigate to the ProductDetails page.
  • After refreshing the page, the image loads correctly.
  • I have verified that the image exists in the public/asset/img/bg folder.

What I've Tried:

1.Ensured the image path is correct and the image exists in the public/asset/img/ folder.

2.Tried appending query parameters (?v=1) to the image URL to avoid caching issues.

3.Verified that there are no 404 errors in the browser's network tab.

Question: Why do the images fail to load on the first visit in my React app? How can I ensure the images are loaded immediately upon navigation without needing to refresh the page? Is this a problem with React Router or background image handling?

Share Improve this question asked Jan 19 at 0:06 Fraol BlKFraol BlK 112 bronze badges 1
  • Are you specifically referring to the data-background="/asset/img/bg/breadcrumb_bg.jpg" attribute of the section element? What, if anything, is handling reading this value to set any background image? Please edit to clarify the problem and include a complete minimal reproducible example of the relevant code you are working with. – Drew Reese Commented Jan 19 at 0:26
Add a comment  | 

1 Answer 1

Reset to default 0

When you refresh, your browser makes a full request for the page and fetches all resources, including the image. But, during dynamic navigation, the browser doesn't reload images unless explicitly told to do so.

I suggest trying to directly use the backgroundImage style in React or define the background in CSS. Avoid using data-background unless necessary and you implement a script to handle it dynamically.

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论