首页 > 解决方案 > 没有在反应路由器中获得组件的道具

问题描述

我想使用 React Component 来获取 id 匹配,但是在转到 url 时会出错:http://localhost:8080/portfolio/1并且对于其他 url 运行良好。错误 :

GET http://localhost:8080/portfolio/bundle.js 404 (Not Found)      1:1  
Refused to execute script from 'http://localhost:8080/portfolio/bundle.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

AppRouter.js

  import React from 'react';
  import { BrowserRouter, Route, Switch, Link,NavLink } from 'react-router-dom';
  import Home from '../Components/Home';
  import Contact from '../Components/Contact';
  import PortfolioItemPage from '../Components/PortfolioItemPage.js'; 
  import NotFound from '../Components/NotFound.js';
  import Header from '../Components/Header';


  const AppRouter = () => (
 <BrowserRouter>
   <div>

     <Header/>
     <Switch>
         <Route path="/" component={Home} exact={true} />
         <Route path="/portfolio/:id" component={PortfolioItemPage} />

         <Route path="/contact" component={Contact}/>
         <Route component={NotFound} />
     </Switch>
   </div>
 </BrowserRouter>
);

  export default AppRouter;

主页

PortfolioItemPage.js

  import React from 'react';
  const PortfolioItemPage = (props) => {
  console.log(props);
    return (
   <div>
     <h1>Hii there...</h1>
    </div>
   );
   };
     export default PortfolioItemPage;

怎么做才能让我在访问http://localhost:8080/portfolio/1时不会出错?

标签: react-routerreact-router-v4react-router-component

解决方案


看起来您的 App 尝试bundle.js从相对路径加载http://localhost:8080/portfolio/

尝试添加<base href="/" /><html><head>以强制您的应用从根 URL 加载资产。


推荐阅读