我正在使用Driftbot,See Here
并试图根据当前的路由/网址来启用/禁用它。我正在使用REACT-ROUTER。
我可以使用drift.unload()
阻止它运行(在我的componentWillMount()
函数中),但是无法重新启动它。
我们已经从SO上提取了一些代码,这些代码一直在起作用,除了现在我们需要对其进行修改,以使其在特定页面上被禁用。
这是我们当前正在使用的代码:
let driftbot_function = function() {
!function() {
var t;
if (t = window.driftt = window.drift = window.driftt || [], !t.init) return t.invoked ? void (window.console && console.error && console.error("Drift snippet included twice.")) : (t.invoked = !0,
t.methods = [ "identify", "config", "track", "reset", "debug", "show", "ping", "page", "hide", "off", "on"],
t.factory = function(e) {
return function() {
var n;
return n = Array.prototype.slice.call(arguments), n.unshift(e), t.push(n), t;
};
}, t.methods.forEach(function(e) {
t[e] = t.factory(e);
}), t.load = function(t) {
var e, n, o, i;
e = 3e5, i = Math.ceil(new Date() / e) * e, o = document.createElement("script"),
o.type = "text/javascript", o.async = !0, o.crossorigin = "anonymous", o.src = "https://js.driftt.com/include/" + i + "/" + t + ".js",
n = document.getElementsByTagName("script")[0], n.parentNode.insertBefore(o, n);
});
}();
drift.SNIPPET_VERSION = '0.3.1';
drift.load('****__our-key__****');
drift.page();
}
driftbot_function();
当前它在我们
componentDidMount()
的app.js
中,因为它是我们的根'/'
。我也尝试将其移至index.html
中的脚本标签内,但结果相同。链接到我要禁用的应用程序的一部分时,将禁用它的唯一方法是
window.drift.unload()
。 .hide
和.off
将不起作用。回到根目录时,我有命令
window.drift.load()
,但是现在它是一个空函数,在运行unload()
函数之前,该函数已经起作用。我也尝试过在
root.js
和app.js
文件中都包含以上链接的Drift Docs中找到的功能,但无济于事有人有什么想法吗?
最佳答案
shift.page()对我不起作用
我正在使用npm包进行反应
https://github.com/chardmd/react-drift
漂移是我的顶级组件之一
<Drift appId='123456789' />
<Favicon url={this.favicon} />
<Meta
meta={this.state.data.metaTags}
/>
设置路线规则,然后在漂移UI中将其设置为正常
componentDidUpdate (prevProps, prevState, snapshot) {
const prevLoc = prevProps.location.pathname
const newLoc = this.props.location.pathname
if (prevLoc !== newLoc) {
window.drift.reset()
关于javascript - 在单页React App中使用Driftbot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48777908/