所以我收到一条错误消息 - TypeError: Cannot readproperties of undefined (reading 'params')
TypeError: Cannot read properties of undefined (reading 'params')
5 | import products from '../products'
6 |
7 | function ProductScreen({ match }) {
8 | const product = products.find((p) => p._id == match.params.id)
9 | return (
10 | <div>
11 | {product.name}
这是我的 ProductScreen.js 文件,导致出现问题
import React from 'react'
import { Link } from 'react-router-dom'
import { Row, Col, Image, ListGroup, Button, Card } from 'react-bootstrap'
import Rating from '../components/Rating'
import products from '../products'
function ProductScreen({ match }) {
const product = products.find((p) => p._id == match.params.id)
return (
<div>
{product.name}
</div>
)
}
export default ProductScreen
和我的 App.js
import { Container } from 'react-bootstrap'
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
import Header from './components/Header'
import Footer from './components/Footer'
import HomeScreen from './screens/HomeScreen'
import ProductScreen from './screens/ProductScreen'
function App() {
return (
<Router>
<Header />
<main className="py-3">
<Container>
<Routes>
<Route path='/' element={<HomeScreen/>} exact />
<Route path='/product/:id' element={<ProductScreen/>} />
</Routes>
</Container>
</main>
<Footer />
</Router>
);
}
export default App;
我还尝试将 match.params.id 更改为 Number 或 ParseInt (match.params) 但仍然给我一个错误...
我知道这很简单,但我被困在这里,无法进一步...任何帮助将不胜感激!
还有一个问题 - 在 App.js 内部,即 Route 所在的位置,在教程中使用 Components={} 属性而不是 element={}。当我尝试同样的方法时,它给了我一个错误,所以我必须以另一种方式修复它。你知道为什么会导致错误吗?
来自教程
<Route path='/' component={HomeScreen} exact />
我的解决办法——
<Route path='/' element={<HomeScreen/>} exact />