在使用svelte / store更新方法更新对象时,应该使用传播运算符吗?

时间:2019-12-03 21:31:52

标签: svelte svelte-store

我正在创建一个使用对象存储数据的商店。

我可以使用价差运算符更新商店,但也可以不使用价差运算符更新商店。

Svelte是否像React一样,应该在更新对象状态之前使用散布运算符创建一个新对象,这样我才不会更改原始对象?

withSpreadOperator()withoutSpreadOperator() ...就是问题所在。

//stores.js

import { writable } from "svelte/store";

export const counts = writable({ n: 0 });
//App.js

<script>
  import { count } from "./stores.js";

  function withSpreadOperator() {
    count.update(o => {
      let x = { ...o };
      x.n++;
      return x;
    });
  }

  function withoutSpreadOperator() {
    count.update(o => {
      o.n++;
      return o;
    });
  }
</script>

<h1>The count is {$count.n}</h1>
<button on:click="{withSpreadOperator}">+</button>
<button on:click="{withoutSpreadOperator}">+</button>

1 个答案:

答案 0 :(得分:2)

您可以选择两者之一,斯维尔特不在乎。确实取决于您喜欢哪种样式。