Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用谷歌adsense与React+;反应路由器_Javascript_Reactjs_React Router_Adsense - Fatal编程技术网

Javascript 使用谷歌adsense与React+;反应路由器

Javascript 使用谷歌adsense与React+;反应路由器,javascript,reactjs,react-router,adsense,Javascript,Reactjs,React Router,Adsense,我正试图将谷歌Adsense整合到我的React网站中,但遇到了一个问题。为了在我的页面上获取广告,我已将此脚本标记包含到我的html文件的头部: <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> 广告包装在一个简单的组件中,如下所示: export default class GoogleAdSense extends Component {

我正试图将谷歌Adsense整合到我的React网站中,但遇到了一个问题。为了在我的页面上获取广告,我已将此脚本标记包含到我的html文件的
头部

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

广告包装在一个简单的组件中,如下所示:

export default class GoogleAdSense extends Component {    
  componentDidMount() {
    (window.adsbygoogle = window.adsbygoogle || []).push({});
  }

  render() {
    const {
      showAd,
      className,
      slot,
      format,
    } = this.props;

    return (
      <div className="GoogleAdSense">
        <ins
          className={ `adsbygoogle ${className}` }
          style={{ display: 'block' }}
          data-ad-client="ca-pub-7104738102834759"
          data-ad-slot={slot}
          data-ad-format={format}
        >
        </ins>
      </div>
    );
  }
}
<GoogleAdSense
  slot="3461840703"
  className="QuestionGoogleAd"
  format="auto"
/>
导出默认类GoogleAddSense扩展组件{
componentDidMount(){
(window.adsbygoogle=window.adsbygoogle | |[]).push({});
}
render(){
常数{
肖瓦德,
类名,
狭槽
格式,
}=这是道具;
返回(
);
}
}
由以下其他组件渲染:

export default class GoogleAdSense extends Component {    
  componentDidMount() {
    (window.adsbygoogle = window.adsbygoogle || []).push({});
  }

  render() {
    const {
      showAd,
      className,
      slot,
      format,
    } = this.props;

    return (
      <div className="GoogleAdSense">
        <ins
          className={ `adsbygoogle ${className}` }
          style={{ display: 'block' }}
          data-ad-client="ca-pub-7104738102834759"
          data-ad-slot={slot}
          data-ad-format={format}
        >
        </ins>
      </div>
    );
  }
}
<GoogleAdSense
  slot="3461840703"
  className="QuestionGoogleAd"
  format="auto"
/>

这个方法是从文章中提取出来的

使用上述实现,可以在页面上正确加载广告。当用户导航到其他页面时会出现问题。因为我使用的是react路由器,所以头部不会更新(react头盔标题的一些更改除外),Adsense脚本也不会重新加载。这让Adsense认为它与我获得的Adsense页面浏览量和Adsense文档显示的页面相同:

单独的JavaScript代码:当用户的浏览器执行AdSense广告代码时,AdSense统计页面视图

当我检查Adsense HTTP请求时,我可以看到有一个
prev_fmts
参数可以记住以前请求的ads,这一事实进一步证明了这一点:

问题是,在大约12-16个广告出现后(每页2个,最多8个页面浏览量),Adsense会返回一个空html文档,每个后续广告请求都有400个错误:


如果我通过点击cmd-r手动刷新页面,广告将再次正确加载,但仅在接下来的几个页面浏览中加载。我尝试删除我前面提到的
脚本
,并在每次页面更改时将其重新插入头部,因为这(理论上)会重新运行广告代码并触发新的Adsense页面视图,但这不起作用。这个网站的主要目的是能够显示广告以产生稳定的收入流,如果我不能使用React在我所有的页面浏览量上显示广告(我现在平均每个用户20个),我将不得不重新实现整个网站,这是我真正不想做的。还有其他人经历过这种情况并找到了解决方案吗?

你可以用谷歌标签来管理你的adsense显示器


它们具有刷新页面上广告的功能,可用于客户端应用程序

您可以使用准备好的react组件来

有趣的。。。我会尝试一下,等我知道更多的时候再给你回复。谢谢你的洞察力!