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

Svelte3点击tab报Function called outside component initialization错误如何解决

问题成因

该报错是因为错误使用了Svelte的createEventDispatcher方法:

  • Svelte要求createEventDispatcher必须在组件初始化阶段(即<script>标签的顶层同步执行阶段)调用,才能绑定当前组件实例生成可用的dispatch方法
  • 你写的const dispatch = createEventDispatcher仅将createEventDispatcher函数本身赋值给了dispatch变量,没有在初始化阶段执行调用
  • 等到点击tab触发事件回调时才会实际执行createEventDispatcher,此时已经脱离了组件初始化上下文,因此抛出对应错误

修复方案

仅需要修改Tabs.svelte中createEventDispatcher的调用逻辑,在初始化阶段就执行调用生成dispatch函数即可:

<script>
  import { createEventDispatcher } from "svelte";
  // 初始化阶段直接调用生成dispatch方法
  const dispatch = createEventDispatcher();
  export let items;
  export let activeItem;
</script>

<ul class="tab tab-block">
  {#each items as item}
    <li on:click={() => dispatch("tabChange", item)}>
      <div class:active={item === activeItem}>
        {item}
      </div>
    </li>
  {/each}
</ul>

修改后点击tab即可正常触发自定义事件,不会再抛出初始化相关错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:18:03