tip*_*exx 2 javascript svelte sapper svelte-3
我如何使用 Sapper 定期获取数据?
这是正确的方法吗?
//src/routes/fetch_on_this_page.svelte
<script>
setInterval(async () => {
//fetch here
}, 3000);
</script>
Run Code Online (Sandbox Code Playgroud)
最巧妙的方法是在内部完成所有操作onMount:
<script>
import { onMount } from 'svelte';
onMount(() => {
async function fetchData() {...}
const interval = setInterval(fetchData, 3000);
fetchData();
return () => clearInterval(interval);
});
</script>
Run Code Online (Sandbox Code Playgroud)
除了创建更少的组件级变量之外,onMount代码不会在服务器端渲染期间运行,因此涉及的工作也更少。如果您需要在多个组件中执行此操作,您还可以将其包装到自定义生命周期函数中:
// poll.js
import { onMount } from 'svelte';
export function poll(fn, ms) {
onMount(() => {
const interval = setInterval(fn, ms);
fn();
return () => clearInterval(interval);
});
}
Run Code Online (Sandbox Code Playgroud)
<script>
import { poll } from './poll.js';
poll(async function fetchData() {
// your implementation goes here
}, 3000);
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3430 次 |
| 最近记录: |