首页 > web前端 > js教程 > 正文

在 Svelte 中与符文类共享符文

聖光之護
发布: 2025-01-16 13:30:10
原创
721人浏览过

在 svelte 中与符文类共享符文

我通常避免在 TypeScript 代码中使用类,倾向于使用函数以简化代码,并利用 tree shaking 的优势避免引入不必要的类方法。

然而,Rich Harris 建议在某些情况下使用符文类可以提高性能,因为它们无需使用 get 和 set 方法或中间 $state 变量来管理状态,从而直接操作状态。

可共享符文

我们需要一个可共享的符文类,这需要用到 Svelte 的上下文机制。

// rune.svelte.ts
import { get, has, set } from 'svelte';

type RCurrent<TValue> = { current: TValue };

export class Rune<TRune> {
    readonly #key: symbol;

    constructor(name: string) {
        this.#key = Symbol(name);
    }

    exists(): boolean {
        return has(this.#key);
    }

    get(): RCurrent<TRune> {
        return get(this.#key);
    }

    init(value: TRune): RCurrent<TRune> {
        const _value = { current: value };
        return set(this.#key, _value);
    }

    update(getter: () => TRune): void {
        const context = this.get();
        // 使用 $effect 或类似的响应式机制
        // ...  (此处需要根据实际的响应式机制进行调整) ...
    }
}
登录后复制

我们可以导出自定义符文到其他组件中使用。

// counter.svelte.ts
import { Rune } from './rune.svelte';

export const counter = new Rune<number>('counter');
登录后复制

这是共享状态的一种方法,它与服务器端渲染兼容(详见之前的讨论)。 需要注意的是,我们需要为每个共享状态变量赋予一个唯一的名称。

初始化

状态的初始化,如同其他上下文一样,应该在父组件中进行,并且只初始化一次。

<script>
    import { counter } from '$lib/counter.svelte';

    const count = counter.init(0);
</script>
登录后复制

在子组件中读取

子组件可以安全地读取状态:

<script>
    import { counter } from '$lib/counter.svelte';
    const count = counter.get();
</script>

<h1>子组件:{count.current}</h1>
<button on:click={() => count.current++}>子组件递增</button>
登录后复制

响应式更新

更新共享状态需要通过一个函数来实现响应式更新:

<script>
    import { counter } from '$lib/counter.svelte';
    let value = 0; // 或者其他响应式变量

    counter.update(() => value);
</script>

<input type="number" bind:value>
登录后复制

这使得更新具有响应性。我们可以传入任何响应式变量,它会像 $derived 一样更新。

直接更新

当然,也可以直接更新:

<script>
    import { counter } from '$lib/counter.svelte';
    const count = counter.get();
    count.current = 9;
</script>
登录后复制
  • 代码仓库
  • 演示

希望这些信息对您有所帮助。

以上就是在 Svelte 中与符文类共享符文的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号