Why is this an issue?

React Refs provide a way to access DOM nodes or React elements created in the render method.

Older React versions allowed the ref attribute to be a string, like "textInput", later accessible as this.refs.textInput. This is considered legacy code due to multiple reasons:

const Hello = createReactClass({
  componentDidMount() {
    const component = this.refs.hello; // Noncompliant
    // ...
  },
  render() {
    return <div ref="hello">Hello, world.</div>;
  }
});

Instead, reference callbacks should be used. These do not have the limitations mentioned above. When the DOM node is added to the screen, React will call the ref callback with the DOM node as the argument. When that DOM node is removed, React will call your ref callback with null. One should return undefined from the ref callback.

const Hello = createReactClass({
  componentDidMount() {
    const component = this.hello;
    // ...
  },
  render() {
    return <div ref={(c) => { this.hello = c; }}>Hello, world.</div>;
  }
});

Resources

Documentation