NavigationLink 可以在导航到另一个视图时执行异步功能吗?

Can a NavigationLink perform an async function when navigating to another view?

我正在尝试在 SwiftUI 中创建一个导航 link,用于登录用户并导航到下一个屏幕。

我尝试使用 .simultaneousGesture,如下所示,基于 。当我让它执行一个简单的动作(例如 print("hello"))时,代码工作正常并导航到下一页,但是当我让它执行我的 authState.signUp 函数(异步)时,它调用功能,但不导航到下一页。

我应该用不同的方式来处理这个问题吗?

NavigationLink(destination: NextView()) {
    Text("Create account")
}
.simultaneousGesture(TapGesture().onEnded {
    authState.signUp(user: user)
})

您可以使用导航链接的选择参数

添加这个变量

@State var trigger: Bool? = nil

并使用

NavigationLink(destination: NextView(), tag: true,
                                   selection: $trigger ) {
}

当你的其他工作(登录)完成时 toggle() 触发器和 navigationLink 触发。