Reactjs: Uncaught TypeError: Невозможно установить свойство 'innerHTML' для null - PullRequest
0 голосов
/ 28 декабря 2018
import React, { Component } from 'react';
import ReactDOM from 'react-dom';

export default class Game extends Component {
  constructor(props) {
    super(props);
    this.myRef = React.createRef();
    this.check = this.check.bind(this);
  }


 drawBackground() {
    console.log("worked");
}

  check () {
    this.myRef.current.innerHTML  = "Testing";
    {this.drawBackground()}      
  }

  render() {
    return (
        <div>
          <h1 ref={this.myRef} id="foo">bar</h1>
          {this.check()}
</div>
    );
  }
}

Мне нужен доступ к тегу text внутри h1 в функции check, но я получаю эту ошибку Reactjs: Uncaught TypeError: Невозможно установить свойство 'innerHTML' для null.Я следовал за документацией.Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Ссылка сначала устанавливается после первого рендера ()

проверить демо один раз демо

Вы ссылаетесь на ссылку сразу после ее объявления, так какобъект ref получает подключенный экземпляр компонента в качестве текущего.

Если вы пытаетесь получить доступ к DOM одновременно, он пытается его сгенерировать.this.myRef ничего не вернет, потому что компонент не имеет реального представления DOM при рендеринге.

0 голосов
/ 28 декабря 2018

Вам необходимо присвоить значение реф.Вы передаете ref как функцию.

class App extends React.Component {
  constructor(props) {
    super(props);
    this.check = this.check.bind(this);
  }

  state = {
    dom: null
  };

  drawBackground() {
    console.log("worked");
  }

  componentDidMount() {
    this.check();
  }

  check() {
    const innerHTML = ReactDOM.findDOMNode(this.myRef).innerHTML;
    setTimeout(
      () => (ReactDOM.findDOMNode(this.myRef).innerHTML = "TEST"),
      1000
    );
    console.log(innerHTML);
    this.setState({
      dom: innerHTML
    });
    {
      this.drawBackground();
    }
  }

  render() {
    return (
      <div>
        <h1 ref={ref => (this.myRef = ref)} id="foo">
          bar
        </h1>{" "}
        //You need to assign the value of the ref to the instance variable
      </div>
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...