我有一些组件应该尽快做一些工作,只要他们的数据第一次到达并呈现,但不是将来的重新渲染。例如:评论已加载并呈现,现在是1.加载社交媒体库和2.加载一些Google Analytics。事件像componentDidUpdate,但只发射一次
现在我做这样的:
componentDidUpdate: function (prevProps, prevState) {
if (this.hasAlreadyUpdatedOnce) {
// ... do some stuff...
} else {
// ... do some stuff that should happen only once...
// 1. load social media libraries
// 2. load some Google Analytics
this.hasAlreadyUpdatedOnce = true;
}
}
但我问自己,如果有比设置一个这样的属性更优雅的方式。
但在'componentDidMount',我的初始值ajax请求还没有发生,这意味着DOM在那里,但是是空的。我想要执行的操作要求DOM包含来自初始ajax请求的数据。或者我误解了一些东西? – kraftwer1 2015-02-09 21:22:13
您应该将数据加载到父组件中,并将其作为道具传递,以便在安装时可以获取数据 – zackify 2015-02-09 22:39:25