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

SolidStart中出现'template2 is not a function'错误求助

解决SolidStart中组件的"template2 is not a function"错误

问题原因

你遇到的错误根源在于:传递给<Show>的when属性不是响应式可追踪的表达式。你的isStateData是普通函数,直接调用isStateData()只会获取一次静态值,Solid无法追踪location.state的变化,导致<Show>内部渲染逻辑出错,抛出"template2 is not a function"的模糊错误。

解决方案

有两种简单的修复方式:

方法一:直接在when中使用箭头函数

让Solid自动追踪location.state的变化:

const location = useLocation();

return (
  <Show when={() => location.state?.myStateData}>
    State available
  </Show>
);

方法二:用createMemo创建响应式计算值

显式声明响应式依赖,确保状态变化时自动更新:

import { createMemo } from "solid-js";

const location = useLocation();
const isStateData = createMemo(() => location.state?.myStateData);

return (
  <Show when={isStateData()}>
    State available
  </Show>
);

补充说明

Solid的响应式系统依赖对信号、计算值的依赖追踪。如果直接调用普通函数获取响应式对象的属性,会丢失追踪能力,导致组件无法正确响应状态变化。其他<Show>组件能正常工作,应该是它们的when属性使用了正确的响应式写法(比如直接引用信号、memo,或箭头函数包裹的依赖)。

内容的提问来源于stack exchange,提问作者Gabriel Cséfalvay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:40:16