【发布时间】:2017-02-10 01:40:44
【问题描述】:
我正在尝试使用 React 和 Redux Form 实现 Invisible reCAPTCHA。一般来说,Invisible reCAPTCHA 工作流程是:
- 呈现“不可见”的验证码,返回其小部件 ID。
- 使用小部件的 ID 调用
grecaptcha.execute。如有必要,将提示用户解决挑战。结果将传递给在呈现验证码时指定的回调函数。 - 连同验证码结果一起提交表单。
我创建了一个 React 组件,旨在与 Redux Form 的 Field 一起使用,它呈现 CAPTCHA 并在调用 grecaptcha.execute 后更新表单状态:
class ReCaptcha extends React.Component {
render() {
return <div ref={div => this.container=div} />
}
componentDidMount() {
const { input: { onChange }, sitekey } = this.props
grecaptcha.render(this.container, {
sitekey,
size: "invisible",
callback: onChange
})
}
}
但是,在用户提交表单时,我不知道如何或在哪里调用 grecaptcha.execute 以及小部件 ID。我不能在onSubmit 中调用它,因为那里无法访问小部件 ID。我可以在呈现 CAPTCHA 后立即在 ReCaptcha 中调用它,但如果用户需要解决 CAPTCHA,则会在表单呈现后立即提示他这样做。
这个minimal working example 展示了我到目前为止所取得的成就。
【问题讨论】:
标签: reactjs recaptcha redux-form