$ 的简化语法:将语句标记为反应式
Simplified syntax for $: marks a statement as reactive
如何简化$:
代码?:
Symbol.svelte
<script>
export let symbol;
$:c = symbol.c;
$:name = symbol.name;
$:{console.log("log Symbol", name, c)}
</script>
<div on:click={()=>symbol.c=0} >
{name} {c}
</div>
我梦想着这样的事情:
export let symbol;
$:{c,name} = symbol;
我不会用...
export let c,name;
...因为在 on:click
中我必须用 symbol.c = 0
修改 symbol
对象 - 没有这个我的 store
命名为 list
将不会更新.
整个例子:https://svelte.dev/repl/37e3a1fa96fc4f1dbc7cfcafb1edc439?version=3.22.1
PS,如果可以使用export let c, name;
而不丢失store
更新,请具体说明如何操作。
就目前而言,您目前没有在您的on:click
处理程序中更新您的list
商店。事实上,除了初始化它或使用依赖于另一个商店的奇怪机制将元素设置为零之外,您没有其他方法可以 set/update 您的 list
商店。
老实说,我不太了解您的商店,但尽管如此,按照您设计的方式使用商店并搭载其现有方法,以下将起作用并且实际上更新您的店铺:
Symbol.svelte
<script>
import { list, inputSymbol } from './stores.js';
export let c, name
$:console.log("log Symbol", name, c)
</script>
<div on:click={() => {
inputSymbol.set(name)
list.setToZero()
}}>
{name} {c}
</div>
App.svelte
...
{#each $list as symbol (symbol.name)}
<Symbol {...symbol}/>
{/each}
See REPL(添加 list
商店控制台登录 App.svelte 以实际跟踪商店更新)
如果你想在响应式语句中解构变量,只需将语句括在括号中即可:
$: ({ c, name } = symbol);
在此处了解更多信息:object destructuring without var
如何简化$:
代码?:
Symbol.svelte
<script>
export let symbol;
$:c = symbol.c;
$:name = symbol.name;
$:{console.log("log Symbol", name, c)}
</script>
<div on:click={()=>symbol.c=0} >
{name} {c}
</div>
我梦想着这样的事情:
export let symbol;
$:{c,name} = symbol;
我不会用...
export let c,name;
...因为在 on:click
中我必须用 symbol.c = 0
修改 symbol
对象 - 没有这个我的 store
命名为 list
将不会更新.
整个例子:https://svelte.dev/repl/37e3a1fa96fc4f1dbc7cfcafb1edc439?version=3.22.1
PS,如果可以使用export let c, name;
而不丢失store
更新,请具体说明如何操作。
就目前而言,您目前没有在您的on:click
处理程序中更新您的list
商店。事实上,除了初始化它或使用依赖于另一个商店的奇怪机制将元素设置为零之外,您没有其他方法可以 set/update 您的 list
商店。
老实说,我不太了解您的商店,但尽管如此,按照您设计的方式使用商店并搭载其现有方法,以下将起作用并且实际上更新您的店铺:
Symbol.svelte
<script>
import { list, inputSymbol } from './stores.js';
export let c, name
$:console.log("log Symbol", name, c)
</script>
<div on:click={() => {
inputSymbol.set(name)
list.setToZero()
}}>
{name} {c}
</div>
App.svelte
...
{#each $list as symbol (symbol.name)}
<Symbol {...symbol}/>
{/each}
See REPL(添加 list
商店控制台登录 App.svelte 以实际跟踪商店更新)
如果你想在响应式语句中解构变量,只需将语句括在括号中即可:
$: ({ c, name } = symbol);
在此处了解更多信息:object destructuring without var