7

Svelte RealWord App中有这样的东西:

$: query && getData();

当页面大小或其他查询参数发生变化时,这会调用 REST API。

我对列出实体有类似的情况,并且这样做:

 $: activePage && sort && pageSize && getData();

这一切都很好(尽管 && 是一个奇怪的结构,说我想在或更改getData()时执行。activePagesortpageSize

当您还想包含评估为 Falsy 的变量时,使用这种方法会出现问题。

例如,添加searchQuery文本:

let searchQuery = "";
$: searchQuery && activePage && sort && pageSize && getData();

现在反应性不起作用,因为searchQuery评估为false

我们做得到:

$: activePage && sort && pageSize && getData();
$: searchQuery, getData();

但是有了这个 getData() 被调用了 2 次。

有人知道更好的方法吗?

4

2 回答 2

14

您可以将,and&&语法与任意数量的变量和条件一起使用

$: searchQuery, activePage && sort && pageSize && getData();
$: searchQuery, activePage, sort, pageSize, getData();

都是有效的,如果其中一个变量是假的,第二个你不会有问题,而第一个允许你确保某些变量不是假的。

于 2019-08-01T09:52:59.377 回答
3

为了使事情更清楚,您可以将观察到的变量作为参数传递给函数:

$: onChange(searchQuery, activePage, sort, pageSize);

function onChange(...args) {
  getData();
}

因此,如果某些变量是虚假的,您不必担心。

于 2021-02-26T15:45:30.107 回答