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
相关产品推荐
相关产品推荐

