Я понял, с помощью этой строчки
const canvasRoot = ReactDOM.findDOMNode(this.refs.canvasRoot); Указываем на элемент из ДОМ для функции. Но мне кажется такую строчку написать легче, не? document.querySelector("#animation") Или бывают случаи где подход через ref оправдан? |
Цитата:
document.querySelector("#app") ищет элемент, зачем вам его искать, когда вы его сами создаёте. Чтобы это правильно работало вам нужно это компонент изолировать от остальной части DOM при помощи Shadow DOM API... Я думаю, если вы решили использовать React.js, то нужно использовать все его возможности, а не только часть, а остальное пытаться изобрести заново. Да, ссылка на настоящий элемент может быть нужна, и такая возможность предоставляется! |
А зачем компонент изолировать от основного DOM ?
Указывать на элемент через ref я то не против, просто хочется знать в чем разница. Тем более что в этом варианте каждый раз нужно подключать к компоненту => import ReactDOM from "react-dom"; |
Malleys,
можно ли пример где document.querySelector("#app") не работает? |
Вот пример, где ещё не было React-а, тот самый мой первый пример https://codepen.io/Malleys/pen/XQNpXK
Тут класс DotAnimation может использоваться много раз, для каждого элемента свой селектор new DotAnimation(document.getElementById("app")); new DotAnimation(document.getElementById("app2")); Если вы замените "app2" на "app", то второй не будет работать. Цитата:
пример с document.querySelector("#app") https://codesandbox.io/s/rryjlyjrr4 работает, не так как ожидается Обратите внимание, что сanvas вставлен не туда! Цитата:
Цитата:
|
Цитата:
|
Спасибо за подробный ответ
|
Цитата:
|
Часовой пояс GMT +3, время: 15:56. |