reactjs - 这不是升级时的功能错误

时间:2015-10-30 16:24:33

标签: javascript function reactjs deprecated typeahead

我实际上正在更新https://github.com/ezequiel/react-typeahead-component此组件兼容反应> = 0.14但是在更改方法时我遇到了一个错误:

交换this.getDOMnode因其this.findDOMnode弃用的原因导致错误:Uncaught TypeError: this.findDOMNode is not a function

所以我尝试了很多关于React不会在0.14中自动绑定this到几个函数。但它并没有真正帮助我。

module.exports = React.createClass({
  displayName: 'Aria Status',

  propTypes: process.env.NODE_ENV === 'production' ? {} : {
    message: React.PropTypes.string
  },

  componentDidMount: function() {
    var _this = this;

    _this.setTextContent(_this.props.message).bind(this);
  },

  componentDidUpdate: function() {
    var _this = this;

    _this.setTextContent(_this.props.message).bind(this);
  },

  render: function() {
    return (
      React.createElement("span", {
        role: "status",
        "aria-live": "polite",
        style: {
          left: '-9999px',
          position: 'absolute'
        }
      })
    );
  },

  setTextContent: function(textContent) {
    this.findDOMNode().textContent = textContent || '';
  }
});

也许有人可以指点我继续前进!

1 个答案:

答案 0 :(得分:1)

在React v 0.14中findDOMNode已弃用,您可以尝试使用refs,就像这样

setTextContent: function(textContent) {
  this.refs.element.textContent = textContent || '';
}

或使用ReactDOM.findDOMNode

setTextContent: function(textContent) {
  ReactDOM.findDOMNode(this).textContent =  textContent || '';
}

Example