gpt4 book ai didi

javascript - Next JS 给脚本标签添加数据属性

转载 作者:行者123 更新时间:2023-12-05 00:36:28 24 4
gpt4 key购买 nike

当我的 Next JS 应用程序被编译时,它会生成一个包含这样的脚本文件列表。

<script src="/_next/static/chunks/main-1234.js" async=""></script>
<script src="/_next/static/chunks/webpack-1234.js" async=""></script>
<script src="/_next/static/chunks/framework.1234.js" async=""></script>
<script src="/_next/static/chunks/1234.5678.js" async=""></script>
<script src="/_next/static/chunks/commons.1234.js" async=""></script>
<script src="/_next/static/chunks/pages/_app-1234.js" async=""></script>
<script src="/_next/static/chunks/1234.5678.js" async=""></script>
<script src="/_next/static/chunks/pages/%5B%5B...path%5D%5D-1234.js" async=""></script>
<script src="/_next/static/1234/_buildManifest.js" async=""></script>
<script src="/_next/static/1234/_ssgManifest.js" async=""></script>
我想像这样向其中一些添加自定义数据属性。
<script data-cookieconsent="ignore" src="/_next/static/chunks/pages/%5B%5B...path%5D%5D-1234.js" async=""></script>
我已经探索过尝试在 next.config.js 文件中执行此操作,因为我知道可以在其中进行 webpack 覆盖,但我没有看到一种将数据属性添加到动态生成的 js 文件的方法。

最佳答案

从 Next.js 11
您需要扩展和修改 getScripts来自 Head您的 _document.js 中的类(class)文件。

import Document, { Html, Head, Main, NextScript } from 'next/document'

class CustomHead extends Head {
getScripts(files) {
const originalScripts = super.getScripts(files);
return originalScripts.map((script) => {
return React.cloneElement(script, {
'data-cookieconsent': this.props.cookieconsent
});
});
}
}

class CustomDocument extends Document {
render() {
return (
<Html>
<CustomHead cookieconsent="ignore" />
<body>
<Main />
<NextScript />
</body>
</Html>
)
}
}

export default CustomDocument

Next.js 11 之前
另一种解决方案是扩展 NextScript您的 _document.js 中的类(class)文件,包括您的自定义 data-* Next.js 生成的脚本中的属性。
import Document, { Html, Head, Main, NextScript } from 'next/document'

class CustomNextScript extends NextScript {
getScripts(files) {
const originalScripts = super.getScripts(files);
return originalScripts.map((script) => {
return React.cloneElement(script, {
'data-cookieconsent': this.props.cookieconsent
});
});
}
}

class CustomDocument extends Document {
render() {
return (
<Html>
<Head />
<body>
<Main />
<CustomNextScript cookieconsent="ignore" />
</body>
</Html>
)
}
}

export default CustomDocument

关于javascript - Next JS 给脚本标签添加数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66673356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com