重新加载当前页面以填充会话
Reloading current page to fill session
我遇到登录后会话未填充的问题,但如果我手动刷新页面,它就会出现。
因此,作为一种解决方法,我尝试在登录成功后重新加载我的登录页面,以便会话将填充数据。
如何使用goto?我厌倦了 goto('/') 但它打开了索引页面。
我正在寻找动态的东西,而不是使用页面名称。
有没有人知道如何在不重新加载页面的情况下填充会话?在 server.js coed.
中填写了 session 'sapper.middleware'
因为 session
是一个商店,您可以在浏览器中写入它,只要您仔细匹配它将填充的内容 server-side。这是一个有用的模式:
<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()
就可以了。
我遇到登录后会话未填充的问题,但如果我手动刷新页面,它就会出现。 因此,作为一种解决方法,我尝试在登录成功后重新加载我的登录页面,以便会话将填充数据。
如何使用goto?我厌倦了 goto('/') 但它打开了索引页面。 我正在寻找动态的东西,而不是使用页面名称。
有没有人知道如何在不重新加载页面的情况下填充会话?在 server.js coed.
中填写了 session 'sapper.middleware'因为 session
是一个商店,您可以在浏览器中写入它,只要您仔细匹配它将填充的内容 server-side。这是一个有用的模式:
<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()
就可以了。