You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Qwik的root.tsx中正确编写原生脚本?

在Qwik中编写原生脚本的正确方法

问题原因

你之前的两种写法都受限于Qwik的JSX处理逻辑:

  • 直接在<script>标签内写代码,Qwik的JSX编译器会将其识别为JSX表达式,导致编译失败;
  • 用模板字符串插值的方式,JSX会自动转义特殊字符(比如=>中的>会被转成&amp;gt;),破坏脚本语法。

可行解决方案

方案1:使用Qwik客户端副作用钩子(推荐)

Qwik推荐通过useClientEffect$钩子在客户端执行代码,既符合框架的 hydration 逻辑,又能安全注册全局函数:

import { useClientEffect$ } from '@builder.io/qwik';

export default function Root() {
  useClientEffect$(() => {
    // 将函数挂载到window上成为全局方法
    (window as any).globalFunction = (parameter: any) => {
      console.log('hi');
    };
  });

  return (
    <html lang="en">
      <head>
        <title>Qwik App</title>
      </head>
      <body>
        {/* 页面内容 */}
      </body>
    </html>
  );
}

方案2:用dangerouslySetInnerHTML插入原生脚本

如果必须使用原生<script>标签,可通过dangerouslySetInnerHTML属性避免内容被转义:

export default function Root() {
  return (
    <html lang="en">
      <head>
        <title>Qwik App</title>
        <script
          dangerouslySetInnerHTML={{
            __html: `const globalFunction = (parameter) => console.log('hi')`
          }}
        />
      </head>
      <body>
        {/* 页面内容 */}
      </body>
    </html>
  );
}

内容的提问来源于stack exchange,提问作者Big boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:30:44