Я хочу добавить числовое регулярное выражение в параметр may в react-router-dom v6. это работает плавно в v5, как это:
<Route path = "list/:id(\d+)" element = {<MyComponent/>} />
но это не работает в v6.
@Amr, я хочу, чтобы он работал как маршрут
Регулярные выражения не поддерживаются в react-router-dom@6
.
См. Что случилось с путями маршрутов регулярных выражений?
Regexp route paths were removed for two reasons:
Regular expression paths in routes raised a lot of questions for v6's ranked route matching. How do you rank a regex?
We were able to shed an entire dependency (path-to-regexp) and cut the package weight sent to your user's browser significantly. If it were added back, it would represent 1/3 of React Router's page weight!
Вы можете использовать хук useParams
и протестировать параметр id
в компоненте.
Пример:
import { useParams, useNavigate } from 'react-router-dom';
const MyComponent = () => {
const { id } = useParams();
const navigate = useNavigate();
useEffect(() => {
if (!/\d+/.test(id)) {
navigate(-1);
}
}, [id, navigate]);
...
};
почему бы вам не передать это регулярное выражение вашему
MyComponent
через реквизит?