设置存储值的 Svelte 用户注册问题 [英] Svelte user registration issue with setting store value

查看:22
本文介绍了设置存储值的 Svelte 用户注册问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好:)

我正在尝试注册一个用户,成功后,将上下文设置为新注册的用户,然后导航到主页.服务器正确响应并注册用户,但是当调用 setContext 时,我收到以下错误:index.mjs:552 Uncaught (in promise) Error: Function called external component initialization"

I'm trying to register an user and after success, setContext to newly registered user and then navigate to home. Server properly responds and registers user, but when setContext is called i get the following error: "index.mjs:552 Uncaught (in promise) Error: Function called outside component initialization"

    <script>
    import { setContext } from 'svelte'

    async function handleRegistration(e) {
        let user = {
                    firstname: e.target.firstname.value,
                    lastname: e.target.lastname.value,
                }

                fetch('http://localhost:3001/api/auth/register', {
                    method: 'POST',
                    headers: {'Content-Type':'application/json'},
                    body: JSON.stringify(user)
                })
                .then(res => res.json())
                .then(res => {
                    if(res.accessToken) {
                        user.accessToken = res.accessToken
                        user.refreshToken = res.refreshToken
                        setContext('userData', user)
                        navigate("/", { replace: true })
                    }
                })

                updateContext(user)
            }
    }
</script>

<form class="registration" on:submit|preventDefault="{handleRegistration}">
</form>

我做错了什么?

推荐答案

setContext 必须在组件初始化期间同步调用.也就是说,从

登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆