reCAPTCHA:不要访问.getDOMNode()

时间:2017-07-25 22:01:10

标签: reactjs recaptcha dom-node

我一直在尝试将reCAPTCHA实现到我的反应应用程序中但是当一切看起来都没问题时我检查了控制台并发现了这个警告:

Warning: ReactDOMComponent: Do not access .getDOMNode() of a DOM node; instead, use the node directly. This DOM node was rendered by 'reCAPTCHA'.

我当前的软件包版本:

`"react": "^0.14.7",
"react-dom": "^0.14.7",
"react-google-recaptcha": "^0.4.1",`

试图通过降级到react@0.14.0来解决此问题,但这并没有帮助。

编辑:

代码:

onChange(response) {
  console.log("Captcha value:", value);
  this.setState({
    'g-recaptcha-response': response
  });
}
render() {
 return (
    <ReCAPTCHA
      ref="recaptcha"
      sitekey="6Le0bCoUAAAAAMnfIWvY2b8w0Z932kI6Iu_zu3p9"
      onChange={this.onChange.bind(this)}
    />
 );
}

服务器端:

const recaptcha = require('express-recaptcha');
recaptcha.init(process.env.CAPTCHA_SITE_KEY, 
process.env.CAPTCHA_SECRET);

module.exports = {
    captchaVerify(req, res, next) {
    recaptcha.verify(req, (err) => {
      if (!err) {
        res.status(200).send({ err: 'Approved' });
      } else {
        res.status(422).send({ err: 'Disapproved' })
      }
    })
  }
}

1 个答案:

答案 0 :(得分:3)

您使用的是react-google-recaptcha的过时版本,该版本会导致an error/warning with React 14。尝试升级:

npm install --save react-google-recaptcha@0.9.6

如果这不起作用,请将版本更改为0.5.1,它是引入了对React 14的支持的版本。