javascript - 在 React 中加载 .js 脚本,分页/导航栏链接问题
问题描述
我知道我有一个类似于这里的问题,尽管在我看来这是我已经在做的事情。
我有一个函数可以将脚本广告到页面上,如下所示。
export const appendScript = function (scriptToAppend, sourceScript = true) {
if (sourceScript) {
const script = document.createElement("script");
script.type = "text/javascript";
script.async = false;
script.src = scriptToAppend;
document.body.appendChild(script);
} else {
const script = document.createElement("script");
script.type = "text/javascript";
script.async = false;
script.innerHTML = scriptToAppend;
document.body.appendChild(script);
}
};
export const removeScript = (scriptToremove) => {
let allsuspects = document.getElementsByTagName("script");
for (let i = allsuspects.length; i >= 0; i--) {
if (
allsuspects[i] &&
allsuspects[i].getAttribute("src") !== null &&
allsuspects[i].getAttribute("src").indexOf(`${scriptToremove}`) !== -1
) {
allsuspects[i].parentNode.removeChild(allsuspects[i]);
}
}
};
我将脚本添加到 HTML 中:
componentDidMount() {
//Jquery Plugin from the asset site. These are used always.
appendScript("assets/js/jquery-2.2.1.min.js");
appendScript("assets/js/jquery-migrate-1.2.1.min.js");
appendScript("assets/bootstrap/js/bootstrap.min.js");
}
尽管在导航中导航时其中一个脚本没有正确加载(通过<Link></Link>
component.
虽然一旦我刷新页面,脚本正在运行,我可以看到正在使用的脚本,例如显示图片、猫头鹰轮播和其他可见效果。
分页,我从来没有让脚本在下一页上工作,主要是img没有出现。
{pages.map((page) => (
<li key={page} className={page === currentPage ? "active" : "null"}>
<Link to="#" onClick={() => onPageChange(page)}>
{" "}
{page}
</Link>
</li>
))}
也许这也是我在 React 中检索 img 元素的方式:
<div className="image bg-transfer">
<img src={tag.imagePath} alt="Sorry Can't Find :(" />
</div>
为了为反应加载脚本,这种方法是否正确?从静态 HTML 草稿到 React.js,我不能对脚本进行太多更改。我希望有一个简单的答案...
解决方案
感谢爱好者@Tasos Bu,我明白了我所缺少的,他让我想到了添加我需要的脚本的想法,如下所示。这解决了我所有的问题(不是全部,仍然不是百万富翁)。这是我的做法。我正在向 HTML 添加和删除在呈现后仍使用 JQuery 的脚本。
componentDidMount() {
//All custom Js functions, responsivness etc.
appendScript("assets/js/custom.js");
}
componentDidUpdate() {
//All custom Js functions, responsivness etc.
removeScript("assets/js/custom.js");
appendScript("assets/js/custom.js");
}
推荐阅读
- java - 收到的对象与模型不对应
- c++ - 编译器无法推断模板函数的类型?
- ios - 可以通过 NSPersistentCloudKitContainer 访问 creationDate 吗?
- assembly - 我如何在 VS Code 中编写和执行 FASM 代码
- python - Gunicorn 限制服务器性能
- javascript - 在 details 元素中使用 span 元素
- python - 以相同的顺序随机化 3 个单独的向量
- java - Spring Data JPA 创建 DATETIME 列,但插入 TIMESTAMP
- javascript - React Native Web 视图未显示
- mongodb - 无法通过 Mongo Shell 连接 mongoDB 服务器