【问题标题】:page.params is undefined in SvelteKitpage.params 在 SvelteKit 中未定义
【发布时间】:2021-11-17 11:04:36
【问题描述】:

我是使用 SvelteKit 的新手。我阅读了文档(我正在尽我所能跟随并遵循那里的内容以使我的网站正常运行)。

在我的src > routes > posts > [postId].svelte:

<script>
    // http://localhost:3000/posts/[postId]

    import PostDetails from '../../components/pages/PostDetails.svelte';
</script>

<PostDetails />

在我的src &gt; components &gt; pages &gt; PostDetail.svelte

<script>
   import { page } from '$app/stores';

   console.log({ page });
   console.log('page.params', page.params);
</script>

<h1>Post Title</h1>

我想获得page.params.postId,但它不起作用。所以我决定在控制台上记录pagepage.params 的值:

in the docs 所述,我期待从这个page 对象中获得{ host, path, params, query }。但我得到的只是一个subscribe 函数。我究竟做错了什么?请帮忙。

【问题讨论】:

    标签: svelte sveltekit


    【解决方案1】:

    page from $app/stores 是一个 store,这意味着你需要 subscribe 到它来获取当前值。那是因为该值不是固定的,而是每次页面更新时都会更新。要轻松订阅商店,请在其前面加上 $ 符号:

    <script>
       import { page } from '$app/stores';
    
       // manually (don't forget to unsubscribe in onDestroy to avoid memory leaks)
       page.subscribe(currentPage => console.log(currentPage));
    
       // easier
       console.log({ page: $page });
       console.log('page.params', $page.params);
    </script>
    
    <h1>Post Title</h1>
    

    $app/stores: https://kit.svelte.dev/docs#modules-$app-stores 上的文档
    使用$ 自动订阅的文档:https://svelte.dev/docs#4_Prefix_stores_with_$_to_access_their_values

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 2021-07-02
      • 2022-09-26
      • 2022-07-22
      • 2023-01-16
      • 2022-01-17
      • 2023-01-16
      相关资源
      最近更新 更多