frzi / swiftui-router

Path-based routing in SwiftUI
MIT License
900 stars 43 forks source link

How to use? #32

Closed AylaAsia-qinsunbo closed 2 years ago

AylaAsia-qinsunbo commented 2 years ago

Hello, thank you for the library. But because there is no example, I don't know how to use it. Can you provide an example? thanks

frzi commented 2 years ago

Hi, yes, sorry, I understand the library can be a bit alien and daunting at first.

First you wrap your app in a Router:

@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            Router {
                ContentView()
            }
        }
    }
}

The Router initializes all environment values and object etc. So using routes only works inside a Router. (You only need one Router in your entire app.)

Use Route to only render views when their path matches that of the global state. And use NavLink to make buttons that navigate to a path.

struct MyView: View {
    var body: some View {
        VStack {
            Route(path: "/hello-world") {
                // Will only be rendered if the path is "/hello-world".
                Text("Hello world!")
            }

            // A button that will navigate to "/hello-world"
            NavLink(to: "/hello-world") {
                Text("Go to Hello world")
            }
        }
    }
}

These are the basics. The README contains short descriptions of other views and features available in the library. The source code also contains documentation and is accessible in Xcode. (You may have to build the documentation via Product > Build Documentation to get access to the fully formatted docs)

Schermafbeelding 2021-11-05 om 12 07 04

I'm still trying to reserve time to work on tutorial(s) and example code 🙇

AylaAsia-qinsunbo commented 2 years ago

Thank you