Dioxus Router

Crates.io MIT licensed Build Status Discord chat

Website | Guides | API Docs | Chat

Overview

Dioxus Router is a first-party Router for all your Dioxus Apps. It provides an interface similar to React Router, but takes advantage of types for more expressiveness.

```rust, no_run

![allow(nonsnakecase)]

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 {},

}

fn App(cx: Scope) -> Element { render! { Router:: { } } }

[inline_props]

fn Index(cx: Scope) -> Element { render! { h1 { "Index" } Link { to: Route::BlogList {}, "Go to the blog" } } }

[inline_props]

fn Blog(cx: Scope) -> Element { render! { h1 { "Blog" } Outlet:: { } } }

[inline_props]

fn BlogList(cx: Scope) -> Element { render! { h2 { "List of blog posts" } Link { to: Route::BlogPost { blogid: 0 }, "Blog post 1" } Link { to: Route::BlogPost { blogid: 1 }, "Blog post 2" } } }

[inline_props]

fn BlogPost(cx: Scope, blog_id: usize) -> Element { render! { h2 { "Blog Post" } } } ```

You need to enable the right features for the platform you're targeting since these are not determined automatically!

Contributing

License

This project is licensed under the [MIT license].

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Dioxus by you shall be licensed as MIT without any additional terms or conditions.