在Svelte RealWord App 中有这样的东西:
$: query && getData();
Run Code Online (Sandbox Code Playgroud)
当页面大小或其他查询参数更改时,这会调用 REST API。
我对上市实体有类似的情况,并且会这样做:
$: activePage && sort && pageSize && getData();
Run Code Online (Sandbox Code Playgroud)
这一切运作良好(虽然&&是一个奇怪的构造说我要执行getData()时activePage,sort或pageSize改变。
当您还想包含评估为 Falsy 的变量时,使用这种方法会出现问题。
示例,添加searchQuery文本:
let searchQuery = "";
$: searchQuery && activePage && sort && pageSize && getData();
Run Code Online (Sandbox Code Playgroud)
现在反应性不起作用,因为searchQuery评估为false。
我们可以完成这个:
$: activePage && sort && pageSize && getData();
$: searchQuery, getData();
Run Code Online (Sandbox Code Playgroud)
但是有了这个 getData() 被调用了 2 次。
有人知道更好的方法吗?
小智 13
为了使事情更清楚,您可以将观察到的变量作为参数传递给函数:
$: onChange(searchQuery, activePage, sort, pageSize);
function onChange(...args) {
getData();
}
Run Code Online (Sandbox Code Playgroud)
因此,您不必担心某些变量是否为假。
Mor*_*ish 10
您可以将,and&&语法用于任意数量的变量和条件
$: searchQuery, activePage && sort && pageSize && getData();
Run Code Online (Sandbox Code Playgroud)
$: searchQuery, activePage, sort, pageSize, getData();
Run Code Online (Sandbox Code Playgroud)
都是有效的,如果其中一个变量是假的,那么第二个就不会有问题,而第一个允许您确保某些变量不是假的。
| 归档时间: |
|
| 查看次数: |
2943 次 |
| 最近记录: |