Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在Svelte中创建一个可更新到本地存储的嵌套阵列存储?_Arrays_Local Storage_Svelte_Svelte Store - Fatal编程技术网

Arrays 如何在Svelte中创建一个可更新到本地存储的嵌套阵列存储?

Arrays 如何在Svelte中创建一个可更新到本地存储的嵌套阵列存储?,arrays,local-storage,svelte,svelte-store,Arrays,Local Storage,Svelte,Svelte Store,我想创建一个对象作为存储,其中对象中的数组也可以用作存储。每个阵列都需要更新(订阅),对象也需要更新到本地存储 这是对象的结构 { "expenses":[ { "name":"sam", "id":1 }, { "name":"bob", "id&quo

我想创建一个对象作为存储,其中对象中的数组也可以用作存储。每个阵列都需要更新(订阅),对象也需要更新到本地存储

这是对象的结构

{
   "expenses":[
      {
         "name":"sam",
         "id":1
      },
      {
         "name":"bob",
         "id":2
      }
   ],
   "options":[
      ...
   ]
}
以下是我目前掌握的代码:

import { writable } from "svelte/store";

// get local storage
let storage = localStorage.getItem("userInputs");

// if storage exists, use it. otherwise set empty array
export let userInputs = writable(JSON.parse(storage) || []);
export let userExpenses = writable(storage.expenses || []);
export let userOptions = writable(storage.options || []);

// subscribe inputs to localStorage
userInputs.subscribe((val) =>
    localStorage.setItem("userInputs", JSON.stringify(val))
);
我希望能够在整个应用程序中将用户费用用户选项用作商店。更新这些数组时,它们需要在masteruserInputs对象中更新,该对象需要推送到localStorage


谢谢你

你可以使用斯维尔特的超赞功能,例如

// create userInputs as derived which results in a store
// that is updated whenever userExpenses or userOptions
// are.
const userInputs = derived(
   [userExpenses, userOptions], 
   ([ue, uo]) => ({
      userExpenses: ue,
      userOptions: uo
   })
);

// sync to localStorage
userInputs.subscribe(val => {
    localStorage.setItem("userInputs", JSON.stringify(val));
});

太棒了,这就是我想要的。我在寻找过程中偶然发现了它,但它让我不知所措。很高兴它帮了我的忙。当我第一次遇到
derived
时,它也让我不知所措。但一旦你用过几次,你就不会想错过它。