【发布时间】:2018-04-18 07:18:04
【问题描述】:
当页面加载时,我在 ReactJS 和 GatsbyJS 项目的布局 index.js 中使用 componentDidMount() 到 document.createElement("script");
componentDidMount () {
const tripadvisorLeft = document.createElement("script");
tripadvisorLeft.src = "https://www.jscache.com/wejs?wtype=selfserveprop&uniq=789&locationId=10467767&lang=en_NZ&rating=true&nreviews=0&writereviewlink=true&popIdx=true&iswide=true&border=false&display_version=2";
tripadvisorLeft.async = true;
document.body.appendChild(tripadvisorLeft);
}
然后这会请求显示数据并且工作正常。但是,当我 <link to=... 另一个页面使用 gatsby-link(想象同样的问题适用于 react-router)时,componentDidMount() 已经运行,因此它不会再次获取数据。
如何确保在每次path 更改后此脚本为mounted,或者通过特定的path 更好?
【问题讨论】:
-
只是为了确定,您是否希望
componentDidMount的主体(即获取脚本)在每次路由更改时发生? -
React Router 提供了像
onChange和onUpdate这样的钩子,你可以用它们来做一些你想要实现的事情。 See this related stack overflow question -
理想情况下只在某些路线上,例如
root和/reviews/,但在这个阶段一切都将是一个很好的起点。也不是componentDidMount的全部功能只有`const tripadvisorLeft` -
谢谢@ChiragRavindra。我只是在寻找
gatsby-link -
您使用的是哪个版本的
react-router?
标签: javascript reactjs react-router gatsby