79757836

Date: 2025-09-06 22:53:07
Score: 1.5
Natty:
Report link

The problem is that StripeWrapper is defined after the usage, to fix this you simply move the definition up:

  import logo from './logo.svg';
  import { Routes, Route, createBrowserRouter, RouterProvider, Navigate, Outlet } from 'react-router-dom';
  import { Elements } from '@stripe/react-stripe-js';
  import { loadStripe } from '@stripe/stripe-js';
  import './App.css';
  import 'bootstrap/dist/css/bootstrap.css';
  import Header from "../src/Components/Header";
  import Home from "../src/Components/Home";
  import Search from "../src/Components/Search";
  import Login from "../src/Components/Login";
  import Sell from "../src/Components/Sell";
  import Signup from "../src/Components/Signup";
  import ErrorPage from "../src/Components/ErrorPage";
  import StripeComplete from "../src/Components/StripeComplete";
  import StripeError from "../src/Components/StripeError";
  import BuyImageCheckout from "../src/Components/BuyImageCheckout";
  import Selling from "../src/Components/Selling";
  import {} from "./APIRequests/Api";

  

  const stripePromise = loadStripe('xxxxx');

  const StripeWrapper = ({ children }) => {
    return (
      <Elements stripe={stripePromise}>
        {children}
      </Elements>
    );
  };

  const router = createBrowserRouter([
  {
    path: '/',
      element: <LayoutComponent />,
      children: [
        {
          index: true,
          element: <Home />,
        },
        {
          path: '/search',
          element: <Search />,
        },
        { path: '/sell',
          element: (
            <PrivateRoute>
              <Sell />
            </PrivateRoute>
          ),
        },
        {
          path: '/login',
          element: <Login />,
        },
        {
          path: '/signup',
          element: <Signup />,
        },
        {
          path: '/stripecomplete',
          element: <StripeComplete />,
        },
        {
          path: '/stripeerror',
          element: <StripeError />,
        },
        {
          path: '/selling',
          element: <Selling />,
        },
        {
          path: '/sell/buyimagecheckout',
          element: (
            <PrivateRoute>
              <StripeWrapper>
                <BuyImageCheckout />
              </StripeWrapper>
            </PrivateRoute>
          )
        },{
          path: '*',
          element: <ErrorPage />,
        },
      ],
    },

  ]);
  function PrivateRoute({ children }) {
    return localStorage.getItem("userGuid") != null ? children : <Navigate to="/login" />;
  }
  
  function LayoutComponent() {
    return (
      <div>
        <Header></Header>
        <main>
          <Outlet /> {/* Nested routes render here */}
        </main>
      </div>
    );
  }

  function App() {
    return <RouterProvider router={router} />;
  }

  export default App;

Edit: Why is everything indented?

Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • Ends in question mark (2):
  • Low reputation (1):
Posted by: RoboProgramer2012