【发布时间】:2019-03-01 07:49:16
【问题描述】:
在我的 React-App 中,我使用 Firebase SDK。如果用户想要重置他的密码,他将被重定向到我的应用程序中的一个页面。如果代码有效,则组件<PWResetConfirmForm /> 应该被渲染。如果代码无效,则渲染组件<PWResetOutdatedForm />。
我的页面组件如下所示:
class PWResetConfirmPage extends Component {
constructor(props) {
super(props);
this.state = {};
this.verfiyResetPassword = this.verfiyResetPassword.bind(this);
}
verfiyResetPassword() {
const params = (new URL(`http://dummy.com${this.props.location.search}`)).searchParams;
const code = params.get("oobCode")
auth.doVerfiyPasswordReset(code)
.then(function () {
return (
<div className="HomePage-Main">
<TopBar></TopBar>
<PWResetConfirmForm></PWResetConfirmForm>
</div>
);
})
.catch(function () {
return (
<div className="HomePage-Main">
<TopBar></TopBar>
<PWResetOutdatedForm></PWResetOutdatedForm>
</div>
);
})
}
render() {
return (
<div>
{this.verfiyResetPassword()}
</div>
);
}
}
export default PWResetConfirmPage
当我尝试运行时,我得到一个空白页而不是错误。 我的问题在哪里,我该如何解决? 非常感谢您的帮助和时间
【问题讨论】:
-
请记住,浏览器具有开发工具,可让您检查内部结构并查看请求和响应。
-
@jdv 感谢您的回答,但是在安装 React DEV 工具后,我找不到任何东西,这看起来像是一个错误...您对原因有其他想法吗?我的功能“verfiyResetPassword”是否正确?这个函数可以返回一些东西吗?
-
verfiyResetPassword()可能不正确,您不能以这种方式在承诺中返回 JSX。在基本层面上,您最好在 then/catch 中设置一个布尔状态属性并根据该属性有条件地呈现。 -
@AlexanderStaroselsky 感谢您的回答...我是 React 初学者,您能告诉我,我该如何处理我的文件?非常感谢
-
当然可以,但是你什么时候在这个组件中执行
verfiyResetPassword()?是在组件加载时吗?是点击某个按钮的时候吗?它是如何触发的?