嗨, 因此我从屏幕截图中删除了一些敏感信息,但您可以看到足够多的内容来了解我的问题。
现在,我正在尝试为从气象站获取数据的站点构建UI。 我正在尝试使用react-google-maps的InfoBox,默认情况下会禁用鼠标事件。 似乎要启用鼠标事件,必须等待DOM加载完毕,然后添加事件处理程序。
react-google-maps的InfoBox会触发onDomReady
事件(甚至在添加更多div时),但似乎永远不会触发onContentChanged
事件(我在node_modules代码中已经看到)。 / p>
我要在InfoBox中放入的内容基本上是div
,其中每种天气数据的类型都是string ref
。有时会出现一种新型的天气数据,因此我也想输入这些数据,并让ref
可用/可用。
但是,在添加新的div
(并已更新DOM以显示它们)之后,当我尝试控制台记录DOM节点时(ref
指的是节点,因为它们是div
而不是自定义的组件),因此最新添加的未定义。
稍后它们会变成div
(而不是undefined
)一些渲染。
我认为这可能是因为
1)DOM在我尝试访问ref
之前没有更新,
但是确实UI显示了新的div
,
2)不推荐使用string ref
(反应16.5),
但它们适用于div
中的comonentDidMount
,最终适用于div
中的新componentDidUpdate
,
3)在return
的{{1}}值内执行代码可能与render
异步运行,
但是我也尝试了componentDidMount
并用3000毫秒来达到相同的效果,
4)与可枚举属性有关,
但是setTimeout
的行为方式相同。
最后,我决定在相同的几行代码中显示控制台日志getOwnProperties
和this.refs
(如屏幕快照所示),您可以在一个控制台日志语句中看到该日志(在上一行使用Object.keys(this.refs)
的情况下),尽管Object.keys
是具有8个键的对象,但是最近添加的两个this.refs
不会出现在ref
中。 / p>
这可能是react-google-maps的InfoBox,React的Object.keys(this.refs)
和JavaScript的ref
之间的超级复杂的交互,但是似乎它应该很简单,使我迷惑不解。
谁能阐明为什么会这样?
代码看起来相似:
Object.keys
从本质上讲,这是组件。