Solid Start 中如何正确使用服务器端获取的数据?

一艺童 阅读 8

我在 Solid Start 里用 routeData 获取数据,但在组件里直接解构就报错了,说不是函数。明明文档里是这么写的啊?

我试过把 routeData 放在 createRouteData 里,也试过在 onMount 里调用,但都不行。控制台提示 “routeData is not a function”,这到底该怎么用?

<script>
  import { createRouteData } from 'solid-start';
  import { For } from 'solid-js';

  const routeData = createRouteData(async () => {
    const res = await fetch('https://api.example.com/posts');
    return res.json();
  });
</script>

<div>
  <For each={routeData()}>{(post) => <p>{post.title}</p>}</For>
</div>
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
志选 Dev
兄弟,你搞错了,Solid Start 里 routeData 是导出用的,组件里得用 useRouteData 拿数据,别直接解构那个函数。我之前也踩过坑,改成下面这样就行。

// 路由文件顶部导出
export const routeData = async () => {
const res = await fetch('https://api.example.com/posts');
return res.json();
};

// 组件里
import { useRouteData } from 'solid-start';

const posts = useRouteData();


<div>
<For each={posts()}>
{(post) => <p>{post.title}</p>}
</For>
</div>
点赞
2026-03-03 20:33