reactjs - React Google Analytics - 如何检查是否已初始化?
问题描述
我正在尝试实现 react-ga 但仅在生产服务器中(我有本地/开发和生产服务器)。
所以,我想在后台创建一个文本字段,该字段的值保存在数据库中。
然后在前端,只有当我在数据库中有值时才初始化 react-ga。
为了实现这一点,我正在尝试componentDidUpdate
在App.jsx
.
我通过以下方式在后台检索我的所有数据集:
componentDidMount() {
// I get my data in this.props.data_admin
this.props.list_admin();
}
然后在componentDidUpdate(prevProps, prevState)
我检查 this.props.data_admin 是否设置并且不为空,当我得到值时,我想初始化 react-ga :
componentDidUpdate(prevProps, prevState, snapshot) {
if (this.props.data_admin) {
// this.props.data_admin.trackingNumber = UA-XXXXXXXXX
ReactGA.initialize(this.props.data_admin.trackingNumber);
}
}
但这会做很多次(每次更新 App.jsx 时)。所以我应该在初始化之前检查它是否已经完成。如何检查 react-ga 是否已经初始化?
谢谢你的帮助
解决方案
我认为您不应该这样做,componentDidUpdate
而是在componentDidMount
您检索数据之后。
您的数据检索过程是对后端/数据库的异步调用,它应该返回一个用检索到的数据解析的 Promise。然后你可以初始化 react-ga。
componentDidMount() {
// I am assuming this.props.list_admin() returns your data
this.props.list_admin().then((data_admin) => {
if (data_admin) {
// data_admin.trackingNumber = UA-XXXXXXXXX
ReactGA.initialize(data_admin.trackingNumber);
}
});
}
推荐阅读
- perl - 获取 LWP::Simple 头部请求失败的原因
- kotlin - 如何在辅助构造函数中初始化变量并在kotlin中调用super?
- python - 具有多种产品的 django paypal 返回贝宝测试商店
- compiler-construction - Lexer 是否应该即时返回令牌列表或令牌
- oracle - ORACLE 数据库的初始化在单元测试中
- python - LSTM 自动编码器噪声重建
- sql - 在日期时间范围之间添加行
- amazon-web-services - AWS Athena WAF 日志
- python - 在 x 时间后中断 while 循环,但在同一级别继续 for 循环
- android - 在 Android 通知中禁用声音(不改变视觉行为)