Как в реакте по клику мыши создать элемент?

Есть элемент, внутри которого вызывается функция addPoint по клику на button.
Выходит ошибка "TypeError: mouseCoordsLayer.createElement is not a function"

addPoint = (e) => {
        e.preventDefault();
        e.stopPropagation();
        const mouseCoordsLayer = this.pageRefs.current;
        const coordinate = [];
        console.log('click1');
        let point = mouseCoordsLayer.createElement("div");
    
        coordinate.push([this.MouseCoords.getX(e), this.MouseCoords.getY(e)]);
        }

    };
  • Вопрос задан
  • 108 просмотров
Решения вопроса 2
rockon404
@rockon404 Куратор тега React
Frontend Developer
1. Метод createElement реализован в объекте document.
2. Подобные способы создания элементов в React разарботке лучше не использовать. Работайте с данными и рендерите компоненты на их основе.
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега React
Что пофиксить, подскажите плиз.

Ничего, полностью переписать:

.points {
  position: relative;
  height: 400px;
  border: 1px solid silver;
  overflow: hidden;
}

.point {
  display: inline-block;
  position: absolute;
  width: 20px;
  height: 20px;
  background: red;
}

class App extends React.Component {
  state = {
    points: [],
  }

  addPoint = ({ nativeEvent: { offsetX, offsetY } }) => {
    this.setState(({ points }) => ({
      points: [ ...points, {
        x: offsetX - 10,
        y: offsetY - 10,
      } ],
    }));
  }

  render() {
    return (
      <div className="points" onClick={this.addPoint}>
        {this.state.points.map(n => (
          <div className="point" style={{
            left: `${n.x}px`,
            top: `${n.y}px`,
          }}
          ></div>
        ))}
      </div>
    );
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект