它还是真实的吗?
我正在使用 Tauri + Vue + TS 开发我的应用程序,我想我知道你的代码中存在什么样的问题。
首先,您需要在“@tauri-apps/api”包的前端使用调用(对于 Vue)。
其次,您需要传递包含成对(键,值)的对象。
让我们来看看在职的我的代码中的示例:
后端
#[tauri::command]
#[allow(non_snake_case)]
pub async fn getPackage<'s>(packages: StatePackageIndex<'s>, id: &str) -> Result<SerdeDedutyPackage, String> {
let package_id = id.to_string();
for service in packages.read().await.services_ref().values() {
if let Some(agent) =
service.get(&package_id).await.map_err(|error| format!("Internal error: {error}"))? {
return SerdeDedutyPackage::try_from(
agent
.read()
.await
.package_ref()
.to_result()
.map_err(|error| format!("Internal error: {error}"))?)
.await
.map_err(|error| format!("Internal error: While serialize package object: {error}"));
}
}
Err(format!("Internal error: Package with uuid '{id}' not found"))
}
在前端某处
async function refresh(totally = false) {
if (totally)
packages.value = []
const updated: Set<string> = new Set(await invoke('listPackages'))
for (const uuid of updated) {
try {
const serialized: IDedutyPackage = await invoke('getPackage', { id: uuid })
if (!serialized)
continue
packages.value.push(DedutyPackage.fromOptions(serialized))
}
catch (error) {
console.error(`Internal error: Unable to fetch Package '${uuid}' due to: ${error}`)
}
}
}
因此,更具体地说,您的前端函数必须是异步的(或返回承诺)并执行下一步:
// Use JS highlight because I don't worked with Yew
const data = await invoke('greet', { name: 'grmmgrmm'})
invoke('greet', { name: 'grmmgrmm'})
.then((data /* : Data */) => {
console.log('Data is', data)
})
更多信息可以在这里找到:Create a desktop app in Rust using Tauri and Yew