Думаю, это ошибка. По-видимому, обратный вызов наблюдателя вызывается в каком-то странном состоянии документа, когда document.elementsFromPoint()
возвращает только HTML-элемент. Вам даже не нужно звонить this.forceUpdate()
, звонить elementsFromPoint
прямо в обратный вызов наблюдателя, вы получите тот же результат. Я получаю один и тот же результат каждый раз, когда размер div изменяется.
Я думаю, что componentDidUpdate
регистрирует то же самое, так как цепочка вызовов forceUpdate
-> render
-> DOM -> componentDidUpdate
была синхронной, и это странное состояние DOM сохранялось. Ну, наверное, состояние DOM странно только для вызова elementsFromPoint
...
Если вы вызываете forceUpdate
асинхронно, используя, например, setTimeout
, elementsFromPoint
покажет все деления правильно.
То, что Вы пытаетесь сделать и отобразить, по сути сложно. Я сделал, это в прошлом (для процессов diffgram/delta-based), и даже пытающийся отобразить вложенные изменения простым и дружественным способом хитро.
Если это соответствует Вашей базе пользователей, одна опция могла бы быть, чтобы просто сериализировать эти два графика как xml и использовать что-то как различный xml.