javascript - 调用 useParams 时出错
问题描述
这是我制作的 Link 组件:
const Restaurants = () => {
const meatList = require('./Meat-Shops.json');
return meatList.map((restaurant) => {
return (
<Link to={`/menu/${restaurant.store_name}`}>
<div className="restaurant-container">
<div className="image-container">
<img src={restaurant.image} alt={restaurant.alt} />
</div>
<div className="info-container" >
<h4>{restaurant.store_name}</h4>
<h5>Pick-up</h5>
</div>
</div>
</Link>
);
})
}
按下时,它将带我(或渲染)这个组件:
import React, { useState } from 'react';
import { useParams } from 'react-router-dom'
const Menu = () => {
console.log(useParams());
return (
<div>
<p>Hello world</p>
</div>
)
}
export default Menu
我要做的是restaurant.store_name
使用 useParams() 在 Menu 组件中访问(URL 参数,Link 组件的“to”道具的模板字符串末尾的变量)。但是当我调用 useParams() 时,我收到以下错误:
error_message_invalid_hook。我做错了什么?此外,如果需要,这里是包含路由器标签的文件:
import React from 'react'
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import Menu from './Menu';
import Restaurants from './Restaurants';
import NavBar from "./NavBar"
const Pages = () => {
return (
<Router>
<NavBar />
<Switch>
<Route exact path="/">
<Restaurants />
</Route>
<Route path="/menu/:store_name" children={<Menu />} />
</Switch>
</Router>
)
}
export default Pages;
这是我设置时的错误消息:
const { menu } = useParams();
在“菜单”组件的主体内(错误消息:error_message_for_useParams)。
您还可以在我的 GitHub 上查看我的所有组件代码(菜单和餐厅组件):https ://github.com/Toriong/quick_eat_carnivore_search_and_delivery
解决方案
您在这里接近解决方案。在这种情况下useParams()
正在查看:store_name
,因此您将从参数中解构store_name
:const { store_name } = useParams()
在您的功能组件内部。
推荐阅读
- python - Scikit-fuzzy 得到错误引发 ValueError("Unexpected input: " + key)
- python - 如何将 tensorflow.keras 模型移动到 GPU
- reactjs - 将 app.js 从 create-react-app 转换为 react native,得到错误 Invariant Violation
- python - 带有早期条件检查的列表理解
- json - 使用 apoc.periodic.commit 将无尽的 json 流插入 neo4j
- html - 按下“JSON 删除按钮”后,数据会在几秒钟后重新出现
- javascript - 如何同时使用两个 onkeydown 事件?
- npm - 抑制单行多命令 Makefile 配方的输出
- linux - 用 Bash 脚本中的 sed 替换文件中的版本号
- html - 从数据库读取后,如何使所有格式的日期格式统一?