Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 getElementById()不';通过react路由器进入时不工作';s<;链接>;_Javascript_Reactjs_React Router_Create React App - Fatal编程技术网

Javascript getElementById()不';通过react路由器进入时不工作';s<;链接>;

Javascript getElementById()不';通过react路由器进入时不工作';s<;链接>;,javascript,reactjs,react-router,create-react-app,Javascript,Reactjs,React Router,Create React App,我用react router(v5)创建了一个简单的react应用程序。每个页面都有带有当前年份的页脚 const footerYear = document.getElementById('footerThisYear'); if (footerYear) { footerYear.innerHTML = new Date().getFullYear(); } 问题是上面的代码片段在通过react router的进入的子页面中不起作用。它在输入完整的URL时工作 预览: 子页面示例ur

我用react router(v5)创建了一个简单的react应用程序。每个页面都有带有当前年份的页脚

const footerYear = document.getElementById('footerThisYear');
if (footerYear) {
  footerYear.innerHTML = new Date().getFullYear();
}
问题是上面的代码片段在通过react router的
进入的子页面中不起作用。它在输入完整的URL时工作

预览:

子页面示例url:

问题:如何在每一页中获得这项工作


谢谢大家!

如果你想让它在每一页上都起作用,你必须把If语句放在Footer.js文件中。最简单的解释方法是,您的路线是这样工作的:

URL -> index.js -> Router -> Page
当使用直接URL进入页面时,这是它经过的路径,因为路由器组件位于index.js中。当点击Home.js上的链接时,由于它源于Home.js,而Home.js已经存在于index.js中,所以它只会通过

Router -> Page
因此,不会显示您想要的正确页脚,因为显示页脚的函数位于index.js中。要测试这一点,可以在if语句中放置
console.log
语句。如果您导航到Home.js中的页面,则不会调用它


将Footer.js更改为类并将if语句放在其中,它应该可以正常工作。否则,您也可以将页脚设置为有条件地呈现给定道具的年份。

当您可以将其放入页脚jsx中时,为什么要将其作为外部脚本?感谢您对更简单解决方案的提示!