【问题标题】:reactJS , accessing URL with daynamic segments says 'page not found'reactJS,访问带有日期段的 URL 说“找不到页面”
【发布时间】:2020-10-08 20:04:56
【问题描述】:

问题很明显。我在react.js 应用程序中声明了一条包含 2 个动态部分的路线,其中包含以下行:

<Route  path='/products/:cat_id/:subcat_id' component={ProductsWise} />

但是当我尝试访问 url: http://127.0.0.1:8000/products/4/1 时,它只是说: 404 未找到。代码如下:

import React, { Component } from 'react'
  import ReactDOM from 'react-dom'
  import { BrowserRouter, Route, Switch } from 'react-router-dom'
  import ProductsWise from './ProductsWise'
  
  class App extends Component {
    render () {
      return (
        <BrowserRouter>
          <div>
            <Header />
            <Switch>

              <Route  path='/products/:cat_id/:subcat_id' component={ProductsWise} />
              

            </Switch>
          </div>
        </BrowserRouter>
      )
    }
  }
  
  ReactDOM.render(<App />, document.getElementById('app'))

我没有将内容放在ProductsWise.js 中,因为我认为这不是解决问题所必需的。

如何解决问题?

P.S:我实际上是在服务器端使用 PHP Laravel 框架构建应用程序,在客户端使用 react.js。

【问题讨论】:

  • @falinsky,很难理解,因为答案很长。但它不像我的问题那样处理动态段部分,对吧?
  • 问题是,为了让您的应用正常工作,您的后端应该为http://127.0.0.1:8000/products/4/1 和http://127.0.0.1:8000/ 呈现相同的index.html 以及http://127.0.0.1:8000/
  • @falinsky,在 Laravel 的 web.php 中,默认路由声明为 Route::view('/{path?}', 'app');。所以每个 url 请求都会加载 app.blade.php 文件。所以我的应用满足你的条件,我认为
  • 你可以用http://127.0.0.1:8000/products/4/1请求打开你的浏览器控制台并查看你的网络服务器的响应,以确认这个404是由它返回的。

标签: php reactjs laravel react-router


【解决方案1】:

问题是从后端角度看,SPA 没有为products/4/1 路径呈现。

我认为Route::view('/{path?}', 'app') 不相关。

在官方 Laravel routing 文档中没有关于通配符路由的信息 - 你可以分别为 / 和 /products/{catId}/{subcatId} 路径渲染你的 SPA:

Route::view('/', 'app');
Route::view('/products/{catId}/{subcatId}', 'app');

【讨论】:

  • I believe Route::view('/{path?}', 'app') is not relevant. - 那么像cat/create 这样的 URL 将如何工作?
  • 我可以请您在这里查看另一个与反应相关的问题:stackoverflow.com/questions/64359611/… 吗?
  • @IstiaqueAhmed then how will a URl like cat/create work ? - 我们根本没有讨论过这个案例。你在说什么?
猜你喜欢
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 2021-10-16
相关资源
最近更新 更多