Dioxus Router导航异常:use_navigator无法识别Route枚举
解决Dioxus Router中
use of undeclared type \Route``编译错误 是的,你需要导出Route枚举并在home.rs组件中引入它,这是解决该错误的核心方案。
错误原因
Dioxus Router生成的路由枚举(通常命名为Route或Routes)默认是模块私有的,仅能在定义它的模块(比如你的main.rs)内访问。当你在src/pages/home.rs中尝试使用Route::TickerPage时,编译器找不到这个类型,因此抛出未声明的错误。
具体解决步骤
导出路由枚举
在定义路由枚举的文件(比如main.rs)中,给枚举加上pub修饰符,让它能被其他模块访问:// main.rs use dioxus_router::Route; #[derive(Route)] pub enum Routes { #[route("/")] Home, #[route("/ticker")] TickerPage, // 其他路由项 }如果是手动定义的枚举,同样需要
pub:// main.rs pub enum Route { Home, TickerPage, }在home.rs中引入路由枚举
在src/pages/home.rs顶部添加引入语句,根据你的枚举名称和定义路径调整:// src/pages/home.rs use crate::Routes; // 如果你命名为Routes // 或者 use crate::Route; 如果你命名为Route pub fn home(cx: Scope) -> Element { let navigator = use_navigator(&cx); render! { button { onclick: move |_| navigator.push(Routes::TickerPage), "跳转到行情页面" } } }验证修复
运行cargo check,确认use of undeclared type \Route``错误消失。
额外注意事项
如果你的路由枚举定义在单独的模块(比如src/routes.rs),需要调整引入路径:
// src/pages/home.rs use crate::routes::Routes;
同时确保routes.rs中的枚举也是pub的。
内容的提问来源于stack exchange,提问作者IvonaK
相关产品推荐
相关产品推荐

