#javascript #html #reactjs
#javascript #HTML #reactjs
Вопрос:
Я очень новичок в react, и у меня возникли проблемы с доступом к параметру из URL. Я искал много решений, но я продолжал получать ту же ошибку «Uncaught TypeError: не удается прочитать свойство ‘params’ неопределенного». Как я могу получить доступ к параметру из url в компоненте reactjs?
В App.js
render() {
return (
<Router>
<ResetPassword path="/reset-password/:token" />
</Router>
)
}
В ResetPassword.js
import React, { Component } from "react";
class ResetPassword extends Component {
componentDidMount() {
const { token } = this.props.match.params.token;
console.log(token);
}
render() {
return (
<div className="resetPassword">
<div className="change__container">
<form>
<h1 id="changePassword__message"></h1>
<input
type="password"
name="password"
placeholder="password"
className="change__textInput"
required
/>
<input
type="password"
name="passwordTwo"
placeholder="confirm password"
className="change__textInput"
required
/>
<input type="submit" value="Submit" className="change__btnInput btn" required />
</form>
</div>
</div>
);
}
}
export default ResetPassword;
Ошибка
Ошибка неперехваченного типа: не удается прочитать свойство ‘params’ неопределенного
Комментарии:
1. Это означает, что вы неправильно отправляете параметры компоненту ResetPassword, поэтому, когда компонент монтируется, параметров нет. Проверьте, как вы устанавливаете:token, поскольку ошибка исходит оттуда
Ответ №1:
Предполагая, что вы используете react-router, вы можете попробовать это:
import { useParams } from "react-router";
const { token } = useParams();
Ответ №2:
вы должны добавить компонент в качестве реквизита для доступа к совпадению
import { Route } from "react-router-dom";
<Route
path="/reset-password/:token"
component={ResetPassword}
/>
или, если вы хотите передать пользовательские реквизиты, вы можете использовать render prop:
<Route
path="/reset-password/:token"
render={(props) => <ResetPassword {...props} myProp={"foo"} />}
/>
А для чтения токена вы можете сделать один из следующих способов:
const { token } = this.props.match.params;
const token = this.props.match.params.token;