Svelte 将参数添加到派生状态并保持其反应性
Svelte add param to derived state and keep its reactivity
在这个例子中,$derivedValue
是被动的;如果 myArray
在索引 3 处更改,它也会自动更改。
App.svelte
<script>
import { myArray, derivedValue } from './store';
</script>
<h1>{$myArray}</h1>
<h1>{$derivedValue}</h1>
store.js
import {derived, writable} from 'svelte/store';
export const myArray = writable([6, 7, 8, 9, 10]);
export const derivedValue = derived(myArray, value => value[3]);
我想创建一个响应式 getter,它看起来像这样:
export const derivedValue = index => derived(myArray, value => value[index]);
当然,在这种情况下 derivedValue
是一个函数,不再可订阅。有没有办法用参数创建这样一个可订阅的反应派生值?
derivedValue
确实是一个函数,但是returns是一个store。你会像这样使用它:
<script>
import { myArray, derivedValue } from './store';
const first = derivedValue(0);
</script>
<h1>{$myArray}</h1>
<h1>{$first}</h1>
如果您希望此索引也具有反应性,您可以反应性地生成商店:
$: current = derivedValue(index)
并仍将其用作常规商店:$current
在这个例子中,$derivedValue
是被动的;如果 myArray
在索引 3 处更改,它也会自动更改。
App.svelte
<script>
import { myArray, derivedValue } from './store';
</script>
<h1>{$myArray}</h1>
<h1>{$derivedValue}</h1>
store.js
import {derived, writable} from 'svelte/store';
export const myArray = writable([6, 7, 8, 9, 10]);
export const derivedValue = derived(myArray, value => value[3]);
我想创建一个响应式 getter,它看起来像这样:
export const derivedValue = index => derived(myArray, value => value[index]);
当然,在这种情况下 derivedValue
是一个函数,不再可订阅。有没有办法用参数创建这样一个可订阅的反应派生值?
derivedValue
确实是一个函数,但是returns是一个store。你会像这样使用它:
<script>
import { myArray, derivedValue } from './store';
const first = derivedValue(0);
</script>
<h1>{$myArray}</h1>
<h1>{$first}</h1>
如果您希望此索引也具有反应性,您可以反应性地生成商店:
$: current = derivedValue(index)
并仍将其用作常规商店:$current