reactjs - 如何将中间件脚本注入 Next.js Web 项目中的每个页面?
问题描述
我正在使用 Next.js 加入一个新团队——主要的 UI 程序员最近离开了,我是第一次使用 react 和 javascript。我想添加一个浮动实时聊天支持图标(由 SaSS 中间件提供),它要求我们添加以下集成:
<script>
(function(d,t) {
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=BASE_URL+"/packs/js/sdk.js";
g.defer = true;
g.async = true;
s.parentNode.insertBefore(g,s);
g.onload=function(){
window.chatSDK.run({
token: '...',
baseUrl: BASE_URL
})
}
})(document,"script");
</script>
将这样的东西注入 Next 项目的最佳位置在哪里?我们有一个看起来像这样的结构:
web/
MyApp/
pages/
login.tsk
home.tsk
...
每个页面都有结构
export default function Home() {
return (
<MyLayout
header={<MyHeader selectedKeys={["security"]} />}
content={<MyPageDetails />}
footer={<MyFooter />}
/>
);
}
而 MyLayout 是某种动态的东西,返回一个 React.ComponentType:
export default function dynamic<P = {}>(dynamicOptions: DynamicOptions<P> | Loader<P>, options?: DynamicOptions<P>): React.ComponentType<P>;
可能...我想将更改应用于所有页面。
提前致谢。
解决方案
我知道有一种方法。https://nextjs.org/docs/advanced-features/custom-app
function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />
}
Component
应该在每个页面路由中切换到您的页面组件。
如果我没记错的话,你可以做
function MyApp({ Component, pageProps }) {
return (
<div>
Do whatever i want
<Component {...pageProps} {...sendWhateverIwant} />
</div>
)
}
推荐阅读
- javascript - 如何将我的字符串输出转换为对象,以便使用 javascript 将 json 作为输出?
- docker - .Net Core Kafka 消费者总是返回 null
- node.js - NodeJS:一旦执行多个请求,如何使用 Promise.all 来执行一个方法?
- python - 正则表达式 - 提取列表中以大写字母开头的子字符串,带有法语特殊符号
- asp.net-mvc - POST 请求的 Asp.Net MVC 无 Cookie 重定向
- r - 在闪亮的应用程序中使用相同的 actionButton() 在 2 个以上的图之间切换
- angular - 返回 observables 时间问题
- typescript - 我们可以在 Azure blob 存储中运行时在容器下创建文件夹吗?
- django - '$' 在运行 Django 时不被识别为内部或外部命令、可运行程序或批处理文件
- nginx - 意外的 Nginx URL 尾部斜杠重写行为