#state #tauri-plugin #state-management #sync #front-end #manage #dead

sys tauri-plugin-state

为 Tauri 提供简单的状态管理

1 个不稳定版本

0.1.0 2024年6月26日

#23#dead

MIT 许可证

13KB
185

Tauri 状态插件

为 Tauri 提供一个极其简单的状态管理插件

假设您想在前后端之间管理状态,但又希望保持同步并完全由 Rust 管理。

此插件适合您。

前端框架指南

默认情况下,我们在前端使用简单的 Map 对象来存储状态。如果您需要响应性,框架有自己的响应式 Map 实现,您可以使用。

  • Svelte: import { Map } from 'svelte'/reactivity';
  • Vue: 您可以在 reactive 对象中包装一个 map。 setupState(reactive(new Map()));
  • SolidJS: 您可以使用 https://primitives.solidjs.community/package/map 创建响应式 map。 import { ReactiveMap } from ""@solid-primitives/map";
  • React: 不可用。不知道如何在 React 中实现。如果您知道如何实现,请提交一个 PR。

手动监听状态变化

所有状态变化都通过 Tauri 的原生事件 API 广播到前端。您可以通过监听 plugin:state-change 事件来监听这些变化。

import { listen } from '@tauri-apps/api/event'

listen<{ key: string, value: unknown }>('plugin:state-change', (event) => {
    const { key, value } = event.payload
    console.log(`State change for key ${key} with value ${value}`)
})

如何编写 value 取决于您。我们建议使用区分联合来编写值。

恐慌指南

此插件将无法同步状态视为一个不变量违规,并且在无法同步状态时将引发恐慌。我们始终希望保持同步以确保不会出错。

依赖项

~17–25MB
~459K SLoC