【问题标题】:Reloading current page to fill session重新加载当前页面以填充会话
【发布时间】:2020-11-24 12:58:51
【问题描述】:

我在登录后遇到会话未填充的问题,但如果我手动刷新页面,它会出现问题。 因此,作为一种解决方法,我尝试在登录成功后重新加载我的登录页面,以便会话将填充数据。

如何使用 goto?我厌倦了 goto('/') 但它打开了索引页面。 我正在寻找动态的东西,而不是使用页面名称。

有没有人知道如何在不重新加载页面的情况下填充会话? session 在 server.js coed 中填入了 'sapper.middleware'。

【问题讨论】:

  • 你能分享任何相关的代码sn-p吗?登录后如何填写会话?你是如何使用 goto 的?

标签: session svelte goto sapper


【解决方案1】:

因为session 是一个商店,所以您可以在浏览器中写入它,只要您小心匹配服务器端填充的内容即可。这是一个有用的模式:

<script>
  import { stores } from '@sapper/app';

  const { session } = stores();

  async function login() {
    const res = await fetch('auth/login', {
      credentials: 'include',
      method: 'post',
      body: JSON.stringify(whatever)
    });

    if (res.ok) {
      session.update(store => ({
        ...store,
        user: await res.json()
      });
    } else {
      // handle the error
    }
  }
</script>

{#if $session.user}
  <h1>Welcome back {$session.user.name}!</h1>
{:else}
  <button on:click={login}>log in</button>
{/if}

如果您确实需要强制重新加载,location.reload() 可以解决问题。

【讨论】:

  • 我按照你说的做了,我查看了我的代码,并没有在客户端更新所有内容。我的下一个问题是什么是最好的做法?使用相同功能的外部代码?
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 2012-08-01
  • 2019-02-22
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多