该资料是 Dioxus v0.7.x 的开发指南,主要用于构建桌面应用,内容涵盖从基础搭建到状态、事件、异步与路由的用法。
版本变更:0.7 中 cx / Scope 不再需要;use_state 与 use_ref 改用 use_signal。
基本用法:引入 dioxus::prelude::*,以 dioxus::launch(App) 启动,用 #[component] 定义返回 Element 的组件。Cargo.toml 中依赖 dioxus 0.7.2 并按需启用 router 特性,通过 default、web、desktop 特性切换目标平台。
rsx! 宏:支持属性(含条件属性)、for 循环、if 条件与花括号内表达式;循环建议用 for 而非 iter。组件 props 须为所有权类型(如 String 而非 &str),并实现 PartialEq + Clone,可用 #[prop(optional)] 与 #[prop(default = ...)]。
状态与上下文:use_signal 提供读写(读取如 count()、count.read(),写入如 set、write、with_mut),派生状态用 use_memo;Context 通过 use_context_provider 提供、use_context 消费;异步用 use_resource,可依据依赖变化重新执行,并以 Option 判断加载状态。
事件与路由:支持 onclick、oninput、onkeydown、onsubmit 等,表单提交可用 e.prevent_default();路由使用 #[derive(Routable, Clone, PartialEq)] 枚举、#[route] 与 #[layout],配合 Router 和 Outlet 使用。
桌面配置与命令:Dioxus.toml 的 [desktop.window] 可设置 title、width、height;用 curl -sSL http://dioxus.dev/install.sh | sh 安装 dx CLI,dx serve 启动开发服务,dx build --release 构建,dx bundle --release 打包。
限制说明:资料未提供收费、价格、平台支持范围、性能数据或完整 API 细节,部分内容仅为示例,实际使用需参考官方文档。