You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI预览中如何传递泛型Router参数?

SwiftUI预览泛型Router视图的解决方案

针对你在SwiftUI预览中不知道如何传递Router<BasicsRouter>类型参数的问题,这里提供两种实用方案:

方法一:手动创建预览用Router实例

只要你的BasicsRouter遵循了库要求的RouterProtocol,就可以直接初始化一个Router实例传入预览:

#Preview {
    let previewRouter = Router(BasicsRouter())
    return BasicsView(router: previewRouter)
}

方法二:复用RoutingView提供Router

和你在ContentView中的写法保持一致,用RoutingView自动生成所需的Router,这种方式更贴近真实运行场景:

#Preview {
    RoutingView(BasicsRouter.self) { router in
        BasicsView(router: router)
    }
}

额外优化建议

你的BasicsView初始化代码可以简化,Swift会自动为@StateObject属性生成初始化器,不需要手动编写init方法:

struct BasicsView: View {
    @StateObject var router: Router<BasicsRouter>
    
    var body: some View {
        VStack {
            Text("Hello")
        }
    }
}

内容的提问来源于stack exchange,提问作者NodlesView

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:12:37