【问题标题】:Can't pass parameter data through url in React Router无法通过 React Router 中的 url 传递参数数据
【发布时间】:2019-12-09 04:12:36
【问题描述】:

我想通过 URL 插入一些数据,例如 ID。

示例:somewebsite.com/movie/(ID_GOES_HERE)

但我不明白如何实现它。我希望数据进入 url,我想在 movie.js 中检索它,我该怎么做?

我在应用中安装了路由器 dom。

import React from 'react';
import ReactDOM from 'react-dom';
import {Router, Switch, Route} from 'react-router-dom';
import createBrowserHistory from 'history/createBrowserHistory';
import App from './App';
import MovieDetail from './Movie';

const history = createBrowserHistory();

ReactDOM.render(
  <Router history={history}>
    <Switch>
      <Route exact path='/' component={App}/>
      <Route path='/movie' component={Movie}/>
    </Switch>
  </Router>,
       document.getElementById('root')
);

预计会在 Movie 中显示 ID。

【问题讨论】:

标签: reactjs


【解决方案1】:

From react-router documentation:

./App

<Route path="/movie/:movie_id" component={Movie} />;

./电影

// All route props (match, location and history) are available to Movie
export function Movie(props) {
  return <h1>Show movie {props.match.params.movie_id}!</h1>;
}

【讨论】:

  • 函数应该在同一个index.js(路由)文件中? Movie.js 将如何接收参数数据?
  • 不,因为你有它会工作。当您使用react-router-dom 将组件传递给Route 时,该组件将自动从路由器上下文接收道具(匹配、位置和历史记录)。
  • 我做到了,它抛出“第 5 行:解析错误:意外令牌”,对应于:“导出函数电影(道具){”
  • Movie 的 sn-p 只是 React 组件的通用表示。在这种情况下,一个功能组件。你的很可能是一个类组件。与您的案例相关的唯一部分是props.match.params.movie_id。如果它是一个类组件,它可能是this.props.match.params.movie_id。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 2021-04-20
  • 1970-01-01
  • 2019-08-09
  • 2018-02-15
  • 2014-05-22
  • 1970-01-01
相关资源
最近更新 更多