reactjs - 使用带有 React 路由器的渲染道具时在组件中获取未定义的道具
问题描述
我正在尝试实现密码重置,当前当用户单击发送到电子邮件的链接(嵌入令牌和用户 ID)时,他被重定向到更新密码页面。所以,在UpdatePassword
组件中,我得到了未定义的道具。这是代码。
在App.js
<Route
path="/update-password"
render={({ match }) => (
<UpdatePassword
userId={match.params.userId}
token={match.params.token}
/>
)}
/>
UpdatePassword
是一个只有两个输入字段的简单组件:
import React, { Component } from "react"
class UpdatePassword extends Component {
constructor(props) {
super(props)
this.state = {
password: "",
confirmPassword: "",
isSubmitted: false
}
}
handleChange = event => {
const { name, value } = event.target
this.setState({
[name]: value
})
}
render() {
console.log(this.props)
return (
<div>
<h2 style={{ textAlign: "center" }}>Update your password</h2>
<div className="field">
<p className="control has-icons-left has-icons-right">
<input
className="input"
onChange={this.handleChange}
name="password"
value={this.state.password}
type="email"
placeholder="Enter new password"
/>
<span className="icon is-small is-left">
<i className="fas fa-envelope"></i>
</span>
<span className="icon is-small is-right">
<i className="fas fa-check"></i>
</span>
</p>
</div>
<div className="field">
<p className="control has-icons-left has-icons-right">
<input
className="input"
onChange={this.handleChange}
name="confirmPassword"
value={this.state.confirmPassword}
type="email"
placeholder="Confirm password"
/>
<span className="icon is-small is-left">
<i className="fas fa-envelope"></i>
</span>
<span className="icon is-small is-right">
<i className="fas fa-check"></i>
</span>
</p>
</div>
<button onClick={this.handleSubmit} className="button is-success">
Submit
</button>
</div>
)
}
}
export default UpdatePassword
后端路线是router.post("/receive_new_password/:userId/:token", emailController.reveiveNewPassword)
解决方案
我认为你有问题match
。params
可以undefined
。尝试这个:
<Route
path="/update-password"
render={(prop1, prop2) => {
const { match } = prop1;
console.log(prop1, prop2, match);
return (
<UpdatePassword
userId={match.params.userId}
token={match.params.token}
/>
)}
/>
推荐阅读
- r - 附加具有不同行数的列的数据框
- tensorflow - 从头开始训练循环 - 操作批次
- javascript - 如何将两个函数合并为一个函数?
- types - 尝试使用 R 复制固定效应的 SAS 类型 3 测试
- html - 如何从 Razor 页面中的 SelectList 项中捕获 ID 值?
- deep-learning - 如何在深度学习中为图像添加数据?
- javascript - 使用 React Navigation 5,如何使导航到抽屉项重置该堆栈的状态?
- java - 在 xfce4-terminal 中运行 jar 文件而不是 bash
- powershell - 如何在搜索表单中输入命令?
- javascript - 通过数组的循环(for)迭代