You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust Yew框架中获取UseStateHandle中的布尔值?

Yew中获取UseStateHandle包裹的布尔值方法

你代码里的类型错误是因为is_flipped是UseStateHandle<bool>类型的状态句柄,并非直接的布尔值,不能直接用它做match判断。要获取内部的布尔值,需要通过**解引用操作符***访问——因为UseStateHandle实现了Deref trait,允许像操作普通值一样访问它包裹的内容。

修正后的代码

方式一:保留match逻辑

let is_flipped: UseStateHandle<bool> = use_state(|| false);

let onclick: Callback<MouseEvent> = {
    let is_flipped = is_flipped.clone();
    Callback::from(move |_| match *is_flipped {
        true => is_flipped.set(false),
        false => is_flipped.set(true),
    })
};

方式二:简化取反逻辑

切换布尔状态不需要match,直接对内部值取反更简洁:

let is_flipped: UseStateHandle<bool> = use_state(|| false);

let onclick: Callback<MouseEvent> = {
    let is_flipped = is_flipped.clone();
    Callback::from(move |_| is_flipped.set(!*is_flipped))
};

关键说明

  • UseStateHandle是Yew提供的智能指针,用于管理组件状态,必须通过解引用*才能获取它包裹的实际值。
  • 回调中cloneis_flipped是必要操作,因为闭包需要持有状态句柄的所有权,避免生命周期问题。

内容的提问来源于stack exchange,提问作者programandoconro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:39:36