可通过 tauri::command 访问 Tauri 中的可变应用程序状态

问题描述 投票:0回答:1

我正在研究将 Capacitor 应用程序迁移到 Tauri 的概念验证。我希望能够在

#[tauri::command]
函数中访问可变应用程序状态,但我发现在不诉诸全局可变变量的情况下很难做到这一点。

Tauri 关于状态管理的文档 建议将状态传递给

#[tauri::command]
函数,如下所示:

#[tauri::command]
fn increase_counter(state: State<'_, Mutex<AppState>>) -> u32 {
  let mut state = state.lock().unwrap();
  state.counter += 1;
  state.counter
}

我正在阅读 v2.0 RC 文档,但这似乎与 v1 中的相同或相似。

这种方法的问题是,我需要在 JavaScript UI 的调用中提供状态,对吗?我希望状态完全在我的 Rust 代码中维护,而不是担心自己跨越 JavaScript 屏障来回传递它。

在 Tauri 中是否有一种我所缺少的惯用方法可以做到这一点,或者我是否需要使用

lazy_static
或其他一些解决方法?

rust tauri
1个回答
0
投票

这种方法的问题是,我需要在 JavaScript UI 的调用中提供状态,对吗?

不正确,

State
命令参数访问提供给
.manage()
的值。这些参数不是由 JavaScript 参数提供,也不会跨越 Rust-JavaScript 障碍。这在 1.0 和 2.0 中都是相同的行为。

您所拥有的是惯用的,并且已经做了您想要的事情(假设您通过

Mutex<AppState>
向您的
App
提供了初始
manage
)。该文档包含完整使用示例。

© www.soinside.com 2019 - 2024. All rights reserved.