Dioxus 的Router 项目(4)

230 阅读1分钟

重定向完善

你已经很好地掌握了路由!在本章节中,我们将介绍如何创建重定向。

创建重定向

重定向非常简单。当 Dioxus 在确定要渲染哪些组件时遇到重定向,它会将用户重定向到重定向目标。

举一个简单的例子,假设你希望用户即使使用了路径 /myblog/myblog/:name,也能访问到你的博客。

重定向是在路由器枚举中的特殊属性,它接受一个路由和一个带有路由参数的闭包。闭包应该返回一个要重定向到的路由。

让我们在我们的路由器枚举中添加一个重定向:

#[derive(Routable, Clone)]
#[rustfmt::skip]
enum Route {
    #[layout(NavBar)]
        #[route("/")]
        Home {},
        #[nest("/blog")]
            #[layout(Blog)]
                #[route("/")]
                BlogList {},
                #[route("/post/:name")]
                BlogPost { name: String },
            #[end_layout]
        #[end_nest]
    #[end_layout]
    #[nest("/myblog")]
        #[redirect("/", || Route::BlogList {})]
        #[redirect("/:name", |name: String| Route::BlogPost { name })]
    #[end_nest]
    #[route("/:..route")]
    PageNotFound {
        route: Vec<String>,
    },
}

就是这样!现在你的用户将被重定向到博客。

结论

干得好!你已经完成了 Dioxus 路由器指南。你构建了一个小型应用程序,并学习了你可以用 Dioxus 路由器做的许多事情。为了继续你的旅程,你可以尝试下面列出的挑战,查看路由器示例或 API 参考。

挑战

  • 将你的组件组织到单独的文件中,以提高可维护性。
  • 如果你还没有,给你的应用程序一些样式。
  • 构建一个关于页面,让你的访问者了解你是谁。
  • 添加一个使用 URL 参数的用户系统。
  • 创建一个简单的管理系统,用于创建、删除和编辑博客。
  • 如果你想达到极致,将你的应用程序连接到 REST API 和数据库。

img