- 设计思路:
- 使用Svelte的
writable
创建共享状态。
- 封装更新逻辑到函数中,根据不同的用户操作调用不同的更新函数,这样可以集中管理更新逻辑,保证数据一致性。
- 对于异步更新,利用
async
和await
处理,避免异步操作带来的数据不一致问题。
- 关键代码示例:
// stores.js
import { writable } from'svelte/store';
// 创建共享的writable store
export const sharedStore = writable({});
// 定义更新函数
export const updateStoreBasedOnUserAction1 = async (store, newData) => {
// 模拟异步操作
await new Promise(resolve => setTimeout(resolve, 1000));
store.update(data => {
// 这里进行具体的更新逻辑,例如合并新数据
return {...data, ...newData };
});
};
export const updateStoreBasedOnUserAction2 = async (store, newData) => {
// 模拟另一个异步操作
await new Promise(resolve => setTimeout(resolve, 1500));
store.update(data => {
// 不同的更新逻辑
if (Array.isArray(newData)) {
return {...data, list: newData };
}
return data;
});
};
// SomeComponent.svelte
<script>
import { sharedStore, updateStoreBasedOnUserAction1, updateStoreBasedOnUserAction2 } from './stores.js';
let userData1 = { key1: 'value1' };
let userData2 = ['item1', 'item2'];
const handleAction1 = async () => {
await updateStoreBasedOnUserAction1(sharedStore, userData1);
};
const handleAction2 = async () => {
await updateStoreBasedOnUserAction2(sharedStore, userData2);
};
</script>
<button on:click={handleAction1}>触发操作1</button>
<button on:click={handleAction2}>触发操作2</button>