【发布时间】:2021-12-09 13:30:30
【问题描述】:
所以我收到一条错误消息 - TypeError: Cannot read properties 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 />
【问题讨论】:
标签: reactjs react-router react-router-dom