Sapperjs 应用程序用户登录菜单而不是站点范围的菜单
Sapperjs app user logged menu instead of the site wide menu
我正在使用 sapper 模板应用程序,我能够创建用户并记录他们并将他们重定向到用户部分。我的问题是关于显示在网站顶部的网站范围菜单。
在顶部的菜单中,我有主页、signin/login和注册。现在,当用户尝试登录并成功时,我应该将他们重定向到用户部分,顶部的菜单从 (home, login, register) 替换为 ("logout", "Profile"),这是典型的站点范围行为。
我不知道如何在 Sapper 中执行此操作。我的理解是我在 routes 文件夹中有 _layout.svelte 。在那个 component/file 中,我有 nav.svelte 代码是:
<nav>
<ul>
<li><a class:selected='{segment === undefined}' href='.'>home</a></li>
<li><a class:selected='{segment === "register"}' href='register'>Register</a></li>
<li><a class:selected='{segment === "signin"}' href='signin'>Signin</a></li>
</ul>
</nav>
并且在 _layout.svelte 中,它是简单的组件 :
<Nav {segment}/>
<main>
<slot></slot>
</main>
我将不考虑样式代码,因为它无关紧要。那么,如何在 Sapper 中根据用户状态(已登录或未登录)在站点顶部显示特定的菜单项?我可以在 nav.svelte 或 _layout.svelte 中使用 if/else 吗?它负责在路由文件夹中的每个组件的顶部显示菜单。
感谢任何帮助...我希望解决方案不涉及使用外部库,因为它违背了使用 Sapperjs 的目的。 sapper 是否能够根据条件在顶部显示不同的菜单?怎么做?
您可以在导航组件中使用 if/else
<li><a class:selected='{segment === undefined}' href='.'>home</a></li>
{#if userLoggedIn}
<li><a class:selected='{segment === "profile"}' href='profile'>Profile</a></li>
<li><a href='logout'>Logout</a></li>
{:else}
<li><a class:selected='{segment === "register"}' href='register'>Register</a></li>
<li><a class:selected='{segment === "signin"}' href='signin'>Signin</a></li>
{/if}
要获得 userLoggedIn
,您可能会使用商店,或者从会话中填写它。
我正在使用 sapper 模板应用程序,我能够创建用户并记录他们并将他们重定向到用户部分。我的问题是关于显示在网站顶部的网站范围菜单。
在顶部的菜单中,我有主页、signin/login和注册。现在,当用户尝试登录并成功时,我应该将他们重定向到用户部分,顶部的菜单从 (home, login, register) 替换为 ("logout", "Profile"),这是典型的站点范围行为。
我不知道如何在 Sapper 中执行此操作。我的理解是我在 routes 文件夹中有 _layout.svelte 。在那个 component/file 中,我有 nav.svelte 代码是:
<nav>
<ul>
<li><a class:selected='{segment === undefined}' href='.'>home</a></li>
<li><a class:selected='{segment === "register"}' href='register'>Register</a></li>
<li><a class:selected='{segment === "signin"}' href='signin'>Signin</a></li>
</ul>
</nav>
并且在 _layout.svelte 中,它是简单的组件 :
<Nav {segment}/>
<main>
<slot></slot>
</main>
我将不考虑样式代码,因为它无关紧要。那么,如何在 Sapper 中根据用户状态(已登录或未登录)在站点顶部显示特定的菜单项?我可以在 nav.svelte 或 _layout.svelte 中使用 if/else 吗?它负责在路由文件夹中的每个组件的顶部显示菜单。
感谢任何帮助...我希望解决方案不涉及使用外部库,因为它违背了使用 Sapperjs 的目的。 sapper 是否能够根据条件在顶部显示不同的菜单?怎么做?
您可以在导航组件中使用 if/else
<li><a class:selected='{segment === undefined}' href='.'>home</a></li>
{#if userLoggedIn}
<li><a class:selected='{segment === "profile"}' href='profile'>Profile</a></li>
<li><a href='logout'>Logout</a></li>
{:else}
<li><a class:selected='{segment === "register"}' href='register'>Register</a></li>
<li><a class:selected='{segment === "signin"}' href='signin'>Signin</a></li>
{/if}
要获得 userLoggedIn
,您可能会使用商店,或者从会话中填写它。