Я пытался создать систему аутентификации в svelte, и регистрация - это многоэтапный процесс, поэтому необходимо сохранить ответ API от шага 1 и пройти каждый шаг по отдельному маршруту. Обнаружено store
в svelte, но каким-то образом он просто возвращает undefined
при извлечении данных с использованием get
. Ниже приведен демонстрационный код, который возвращает тот же результат.
index.svelte
<script>
import signUpStore from "./hobby-store.js";
let data = {
name: "Rahul",
age: "something"
};
signUpStore.setSignUp(data);
// let result = signUpStore.getSignUp();
// console.log(result); //undefined
</script>
<p>
<strong>
Try editing this file (src/routes/index.svelte) to test live reloading.
</strong>
</p>
About.svelte
<script>
import signUpStore from "./hobby-store.js";
import { onMount } from "svelte";
let result = signUpStore.getSignUp();
console.log("server side : ", result); //undefined
onMount(() => {
console.log("client side : ", result); // undefined
});
</script>
<p>This is the 'about' page. There's not much here.</p>
хобби-магазин. js
import {
writable,
get
} from 'svelte/store'
const signUp = writable()
const signUpStore = {
subscribe: signUp.subscribe,
setSignUp: (items) => {
signUp.set(items)
// console.log('items : ', items, signUp)
},
addSignUp: (data) => {
signUp.update(items => {
return items.concat(data)
})
},
getSignUp: () => {
get(signUp)
}
}
export default signUpStore;
Просто нужно сохранить эти данные в сеансе или любом постоянном хранилище, которое предоставляет svelte или sapper, и сбросить их при успешном действии.