ElementsFromPoints doesn't work with ResizeObserver
我面临一个问题,我什至不知道这是因为ReactJS还是JavaScript。
基本上,如果
这里是一个小提琴,重现了这个问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | class App extends React.Component { divRef; resizeObserver; constructor(props) { super(props); this.divRef = React.createRef(); this.resizeObserver = new ResizeObserver(entries => { console.log("Div resized"); this.forceUpdate(); }); } componentDidMount() { console.log("|| DIDMOUNT CONSOLE ||"); console.log(document.elementsFromPoint(150,150)); this.resizeObserver.observe(this.divRef.current); } componentDidUpdate() { console.log("|| DIDUPDATE CONSOLE ||"); console.log(document.elementsFromPoint(150,150)); } componentWillUnmount() { this.resizeObserver.unobserve(this.divRef.current); } render() { return ( ); } } ReactDOM.render(<App />, document.getElementById('root')); |
1 2 3 4 5 6 7 8 9 10 11 12 13 | @import url(https://fonts.googleapis.com/css?family=Montserrat); body { font-family: 'Montserrat', sans-serif; } .home-div { background: blue; width: 500px; height: 200px; resize: both; overflow: auto; } |
1 2 | <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"> |
如您所见,
使用
而是再次使用
现在,我认为React以某种方式重新渲染了整个DOM,因此,以前的内容不再存在于DOM中,但是
这是一个错误吗?还是我在某处缺少什么?
我想这是一个错误。显然,当
我认为
例如,如果使用