svelte - 创建带参数的派生函数

标签 svelte

这是我第一次使用 Svelte,我正在尝试构建一个商店。 我阅读了文档here但有件事我不清楚。抱歉,如果这是一个愚蠢的问题。

基本上,我创建了一个可读存储(可读,因为它不会改变)和一个派生值。 现在我需要创建一个带有参数的派生函数。

Here my code

stores.js:

import { derived, readable, writable } from 'svelte/store'

export const dataset = readable([1, 3, 2, 5, 4, 2]);

export const sortedDataset = derived(dataset, ($dataset) => {
  return $dataset.sort();
})

export function getCounterValue(value) { // <- how to implement something like this?
    return dataset.filter((d) => d === value).length;
}

App.svelte

<script>
    import {dataset, sortedDataset, getCounterValue} from './stores.js'

    console.log('dataset:', $dataset);
    console.log('sorted dataset:', $sortedDataset);
    console.log('2 counter:', getCounterValue(2)); // <- how can I call the function?
</script>

可能吗?

最佳答案

您可以创建存储派生函数,只需从存储返回一个函数(存储本身不可调用):

export const getCounterValue = derived(dataset, $dataset => {
  return value => $dataset.filter(d => d === value).length;
})
<script>
  //...
  console.log('2 counter:', $getCounterValue(2)); // $ required for store access
</script>

REPL

关于svelte - 创建带参数的派生函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72541151/

相关文章:

css - Svelte:内联 CSS 动画不起作用

slim :引用未定义

couchdb - PouchDB 和 SvelteKit

javascript - svelte + rollup 中的环境变量

javascript - 如何在 svelte 中创建响应式类

svelte - 具有 typescript 和 scss 支持的 svelte/sapper 的 Webpack 配置

svelte - 在 sapper/svelt 中是否有组件的快捷方式

svelte - 嵌套 Svelte 组件的样式级联(共享)

svelte - 从 Svelte 组件导出单独的自定义元素

svelte - 应该如何使用 load()