鍍金池/ 問(wèn)答/HTML/ 在React中重新請(qǐng)求腳本修改全局變量不生效,但是在控制臺(tái)手動(dòng)請(qǐng)求就生效是怎么回

在React中重新請(qǐng)求腳本修改全局變量不生效,但是在控制臺(tái)手動(dòng)請(qǐng)求就生效是怎么回事?

我在項(xiàng)目中的登陸頁(yè)的componentDidMount中將window._vds設(shè)置成初始值,然后想把已經(jīng)加載進(jìn)來(lái)的腳本去掉,(之前登錄進(jìn)系統(tǒng)之后會(huì)有加載進(jìn)來(lái)的js文件)然后重新加載,按理說(shuō),那個(gè)重新加載進(jìn)來(lái)的js文件會(huì)將window._vds處理成一個(gè)其它的對(duì)象,但是我這段代碼執(zhí)行過(guò)后并沒(méi)有使window._vds變成想要的對(duì)象結(jié)果。它還是一個(gè)初始定義的數(shù)組:

componentDidMount() {
    // 給growingIO設(shè)置初始值
    const script = document.getElementById('vds');
    if (script) {
      window._vds = [['setAccountId', 'xxx']];
      script.parentNode.removeChild(script);
      var vds = document.createElement('script');
      vds.type = 'text/javascript';
      vds.async = true;
      vds.id = 'vds';
      vds.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'dn-growing.qbox.me/vds.js';
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(vds, s);
    }
  }

圖片描述

但是如果在控制臺(tái)中手動(dòng)執(zhí)行一下下面代碼中的內(nèi)容:

window._vds = [['setAccountId', 'xxx']];
const script = document.getElementById('vds');
if (script) {
  script.parentNode.removeChild(script);
  var vds = document.createElement('script');
  vds.type = 'text/javascript';
  vds.async = true;
  vds.id = 'vds';
  vds.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'dn-growing.qbox.me/vds.js';
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(vds, s);
}

這個(gè)window._vds就如愿變成了對(duì)象,可能是怎么回事呢?

圖片描述

回答
編輯回答
還吻

只是script標(biāo)簽換了一下,沒(méi)有真正請(qǐng)求那個(gè)js

2018年3月9日 05:27