0

我正在开发一个苗条的应用程序,在那里我创建了一个我正在更新某些事件的商店。我已将商店导入到另一个具有不同目录的组件中。我已经订阅了商店,所以每当对商店的某个地方进行任何更改时,它都应该反映订阅组件中的更改,但不幸的是,它对我不起作用。

商店

//Both with initial state as an empty array
export const current_embeds = writable([])
export const current_deletes = writable([])

我要更新商店的脚本

btn.onclick = e => {
  e.preventDefault();
  e.stopPropagation();
  const linkdata = ctx.remove(vlink);
  if (linkdata) {
    //Updating the store
    current_deletes.update((prevState: Array < any > ): Array < any > => {
      return [...prevState, { ...linkdata
      }]
    })
  }
};

订阅的组件

//Listens to changes 
current_embeds.subscribe(data => console.log('CURRENT EMBEDS NAV --- ', data));

current_deletes.subscribe(data => console.log('CURRENT DELETES NAV --- ', data));

4

1 回答 1

1

从您的代码片段中,我不确定您如何处理订阅的组件。
这是适用于您的案例的有效 REPL:
https ://svelte.dev/repl/44551e32530c46a19a3752b53a5e7732?version=3.24.1

我注意到您必须在主应用程序(或它的子组件)中导入和使用您的订阅组件(Comp.svelte)才能识别和运行您的订阅组件。我不知道如何<script>部分“激活”组件。

于 2020-08-17T10:25:17.427 回答