#ui #react #dom #wasm #cross-platform-ui

dioxus-router

适用于 Dioxus 应用程序的跨平台路由器

17 个不稳定版本 (5 个重大变更)

0.6.0-alpha.22024 年 8 月 7 日
0.5.6 2024 年 7 月 18 日
0.5.0 2024 年 3 月 28 日
0.4.3 2023 年 12 月 7 日
0.2.2 2022 年 3 月 10 日

#651 in GUI

Download history 3410/week @ 2024-05-01 3060/week @ 2024-05-08 3446/week @ 2024-05-15 3262/week @ 2024-05-22 3203/week @ 2024-05-29 3015/week @ 2024-06-05 3109/week @ 2024-06-12 3239/week @ 2024-06-19 2880/week @ 2024-06-26 1705/week @ 2024-07-03 1949/week @ 2024-07-10 2294/week @ 2024-07-17 2348/week @ 2024-07-24 2413/week @ 2024-07-31 2202/week @ 2024-08-07 2330/week @ 2024-08-14

每月 9,677 次下载
15 个库中 使用(直接使用 7 个)

MIT/Apache

235KB
4K SLoC

Dioxus Router

Crates.io MIT licensed Build Status Discord chat

网站 | 指南 | API 文档 | 聊天

概述

Dioxus Router 是所有 Dioxus 应用的官方路由器。它提供了一个类似于 React Router 的接口,但利用类型提供了更多的表达性。

use dioxus::prelude::*;
use dioxus_router::prelude::*;
use std::str::FromStr;

#[rustfmt::skip]
#[derive(Clone, Debug, PartialEq, Routable)]
enum Route {
    #[nest("/blog")]
        #[layout(Blog)]
            #[route("/")]
            BlogList {},

            #[route("/:blog_id")]
            BlogPost { blog_id: usize },
        #[end_layout]
    #[end_nest]
    #[route("/")]
    Index {},
}

#[component]
fn App() -> Element {
    rsx! {
        Router::<Route> { }
    }
}

#[component]
fn Index() -> Element {
    rsx! {
        h1 { "Index" }
        Link {
            to: Route::BlogList {},
            "Go to the blog"
        }
    }
}

#[component]
fn Blog() -> Element {
    rsx! {
        h1 { "Blog" }
        Outlet::<Route> { }
    }
}

#[component]
fn BlogList() -> Element {
    rsx! {
        h2 { "List of blog posts" }
        Link {
            to: Route::BlogPost { blog_id: 0 },
            "Blog post 1"
        }
        Link {
            to: Route::BlogPost { blog_id: 1 },
            "Blog post 2"
        }
    }
}

#[component]
fn BlogPost(blog_id: usize) -> Element {
    rsx! {
        h2 { "Blog Post" }
    }
}

由于这些不是自动确定的,因此您需要为目标平台启用正确的功能!

贡献

  • 在我们的 问题跟踪器 上报告问题。
  • 加入 Discord 并提问!

许可协议

本项目采用 MIT 许可协议

除非您明确声明,否则您提交给 Dioxus 的任何贡献均应按 MIT 许可,不附加任何其他条款或条件。

依赖项

~4–22MB
~360K SLoC