【发布时间】:2020-05-09 01:18:02
【问题描述】:
我想看看如何使用打字稿在<Link to = {}> 中传递 id。然后在SeriesSection 组件中获取链接的id。
SerieComponent.tsx
import React from 'react';
import { Link } from "react-router-dom";
import Serie from '../../interfaces/Serie/Serie';
type T = {
serie: Serie
};
const SerieComponent: React.FC<T> = ({ serie: { id, title, sinopsis, poster, rating, year, extra } }) => {
let channel = extra.map(x => { return x.channel });
return (
<Link to={}/>
<div className="post-2930 movie type-movie status-publish has-post-thumbnail hentry movie_genre-action">
<div className="movie__poster">
<br />
<a className="masvideos-LoopMovie-link masvideos-loop-movie__link movie__link">
<img width="300" height="450" src={poster} className="movie__poster--image" alt={title} />
<img width="300" height="450" src={poster} className="movie__poster--image" alt={title} sizes="(max-width: 300px) 100vw, 300px" />
</a>
</div>
<div className="movie__body">
<div className="movie__info">
<div className="movie__info--head">
<div className="movie__meta"><span className="movie__meta--release-year">{year}</span><span className="movie__meta--genre">{channel}</span></div>
<a className="masvideos-LoopMovie-link masvideos-loop-movie__link movie__link">
<h3 className="masvideos-loop-movie__title movie__title">{title}</h3>
</a>
</div>
<div className="movie__short-description">
<div>
<p>{sinopsis}</p>
</div>
</div>
</div>
</div>
</div>
</Link>
)
};
export default SerieComponent;
这个组件是我想要获取链接ID的地方。
import React from 'react';
const SerieSection: React.FC = () => {
return(
<div>
</div>
)
};
export default SerieSection;
如果你注意到我已经提到了路线
<Route exact path="/serie-section/:id" component={SerieSection}></Route>
import React from 'react';
import { Switch, Route, Redirect, Link } from 'react-router-dom';
import { makeStyles } from '@material-ui/core/styles';
import AppBar from '@material-ui/core/AppBar';
import Toolbar from '@material-ui/core/Toolbar';
import Typography from '@material-ui/core/Typography';
import Button from '@material-ui/core/Button';
import IconButton from '@material-ui/core/IconButton';
import MenuIcon from '@material-ui/icons/Menu';
import Home from '../Home/index';
import About from '../About/index';
import Footer from '../Footer/index';
import SerieSection from '../SerieSection/index';
import useStyles from './styles';
require('../../db/index.ts');
const App: React.FC = () => {
const classes = useStyles();
return (
<div className={classes.root}>
<AppBar position="static">
<Toolbar>
<Button component={Link} to="/" color="inherit">Home</Button>
<Button component={Link} to="/about" color="inherit">About</Button>
</Toolbar>
</AppBar>
<div className="App">
<Switch>
<Route exact path="/" component={Home}></Route>
<Route exact path="/about" component={About}></Route>
<Route exact path="/serie-section/:id" component={SerieSection}></Route>
<Redirect to="/" />
</Switch>
<Footer/>
</div>
</div>
)
}
export default App;
【问题讨论】:
-
您遇到的具体问题是什么?构建 to= 只是字符串模板的问题,文档中的示例当然显示了如何访问路径参数。
-
我想看看我应该如何将值传递给链接,例如'/ series-section':$ {id}。以及如何从我是新手使用 react/typescript 的 SeriesSection 组件获取 id
-
是的,我知道,但在打字稿中它是不同的。
-
究竟是什么方式?您在应用它时遇到过具体问题吗?给minimal reproducible example。在您发布的代码中,您似乎没有尝试任何您说想要的事情。
标签: reactjs typescript react-router