O JSX é uma pseudolinguagem incrível para o React e, para ser sincero, foi o que me fez gostar tanto do React. Usar o React sem JSX é complicado e frustrante, enquanto usar JSX é uma maneira muito mais fácil de expressar seu código. Uma desvantagem do JSX, no entanto, é que ele torna o acesso aos elementos do componente indireto, se não difícil.


A verdade é que acessar os próprios elementos de um componente é muito mais fácil do que a maioria pensa. Vejamos como um método de componente pode acessar seu próprio nó DOM com JavaScript:


Método 1: react-dom


react-dom fornece um findDomNode para encontrar o nó do componente:



// Get ReactDOM
import ReactDOM from "react-dom";

// In your component method
class MyComponent extends Component {

    myMethod() {
        const node = ReactDOM.findDOMNode(this);
    }

}


Com ReactDOM.findDOMNode(this), o senhor pode obter o nó principal do widget e, a partir daí, usar os métodos típicos do DOM:



const node = ReactDOM.findDOMNode(this);

// Get child nodes
if (node instanceof HTMLElement) {
    const child = node.querySelector('.someClass');
}


Isso mistura um pouco de React e manipulação básica de DOM em JavaScript.


Método 2: ref


Outro método de obter nós DOM é usar refs; um exemplo de uso está detalhado em meu React e autofoco:



class MyComponent extends Component {

  // The element we want to retrieve
  _input: ?HTMLInputElement;

  // ....

  componentDidUpdate() {
    this._input.focus();
  }

  render() {
      return (
        <div>
            <input
              ref={c => (this._input = c)}
            />
        </div>
      );
    }
  }
}


Adicionando um ref ao elemento que você deseja manipular é uma abordagem mais centrada no React para obter uma manipulação de um elemento. Ambas as estratégias funcionam bem, portanto, escolha a que o senhor preferir!