1 个不稳定版本
0.1.0 | 2024年6月26日 |
---|
#23 在 #dead
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