如果没有查询字符串,则重定向到 404,react-router

Redirect to 404 if there is no query string, react-router

我是使用 react-router 的初学者,并且自己也会做出反应。我有一条链接到“/items”的路线,它取决于查询字符串 ex。 'items?item_id=156' 并显示项目的信息。我让它像那样工作,但如果用户只访问“/items”而没有查询字符串,我想显示 404。

提前谢谢大家

在这种情况下,您必须使用 wildcard 匹配。你可以做类似的事情:

import React from 'react';
import { Switch } from 'react-router';
import { BrowserRouter , Route ) from 'react-router-dom;
import NotFound from './NotFound'
import ItemPage from './ItemPage'

const routes = (    import NotFound from './NotFound'

               <BrowserRouter>
                  <Switch>
                     <Route path="*" component={NotFound}/>
                     <Route path="/items/:id/" component={ItemPage}/>
                  </Switch>
                </BrowserRouter>

               )

假设您使用的是 react-router v4.

如果 item_id 不可解析,您可以进行重定向。例如:

import queryString from 'query-string'
import { Redirect } from 'react-router-dom'

export default function Items() {
  const queryValues = queryString.parse(this.props.location.search)
  const itemId = queryValues['item_id']

  if (isNaN(itemId)) {
    return <Redirect to="/404.html" />
  }
  return ...
}