Svelte 将参数添加到派生状态并保持其 react 性

标签 svelte svelte-3 svelte-store

在此示例中,$衍生值是响应式的;如果 myArray 在索引 3 处发生更改,它也会自动更改。

应用程序.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]);

我想创建一个响应式(Reactive) setter/getter ,如下所示:

export const derivedValue = index => derived(myArray, value => value[index]);

当然,在这种情况下,衍生值是一个函数,并且不再可订阅。有没有办法用参数创建这样一个可订阅的 react 派生值?

最佳答案

衍生值确实是一个函数,但它返回一个存储。你可以像这样使用它:

<script>
    import { myArray, derivedValue } from './store';
    const first = derivedValue(0);
</script>

<h1>{$myArray}</h1>
<h1>{$first}</h1>

如果您也希望该索引具有反应性,您可以 react 性地生成存储:

$: current = derivedValue(index)

仍然将其用作常规商店:$current

关于Svelte 将参数添加到派生状态并保持其 react 性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68971269/

相关文章:

javascript - 将 Rollup + Svelte 与第三方 AMD 库一起使用

svelte - 是否可以在插槽内制作子组件以将数据发送给其父组件?

svelte - 如何坚持 slim 的商店

svelte - 如何将 Svelte 存储与树状嵌套对象一起使用?

node.js - 如何将 Svelte 页面与 Express 集成?

当任何一组变量发生变化时,Svelte 执行函数

javascript - 如何在路线变化时保持精简的商店状态?

javascript - 在 svelte 中使用后退按钮事件监听器

svelte - 更新数组中对象的正确方法是什么?