swiftui - NavigationLink 在导航到另一个视图时可以执行异步功能吗?
问题描述
我正在尝试在登录用户并导航到下一个屏幕的 SwiftUI 中创建一个导航链接。
我已经尝试使用 .simultaneousGesture ,如下所示,基于此解决方案。当我让它执行一个简单的操作(例如 print("hello"))时,代码可以正常工作并导航到下一页,但是当我让它执行我的 authState.signUp 函数(它是异步的)时,它会调用该函数但不导航到下一页。
我应该以不同的方式解决这个问题吗?
NavigationLink(destination: NextView()) {
Text("Create account")
}
.simultaneousGesture(TapGesture().onEnded {
authState.signUp(user: user)
})
解决方案
您可以使用 navigationLink 的选择参数
添加这个变量
@State var trigger: Bool? = nil
并使用
NavigationLink(destination: NextView(), tag: true,
selection: $trigger ) {
}
当您的其他工作(登录)完成时 toggle() 触发器和 navigationLink 会触发。
推荐阅读
- javascript - Chart.js 雷达图表刻度隐藏在图表后面
- sql - IFELSE 语句如何对 IF then Else 起作用
- asp.net-mvc - 消除弱密码的 Web 服务
- android - 排除 RecyclerView AdapterItem 被无障碍阅读器分组为列表
- caching - 我是否在 Windows 和 MacOS 上使用 GitHub Actions 的操作/缓存进行缓存?
- sql - sql查询连接多个表 - 太慢了
- html - 没有出现 Django 登录的错误消息?
- python - Python - 用户输入 - 输入7位数字后自动启动功能
- reactjs - 在反应计时器应用程序组件中没有重新渲染
- docker - Docker Ubuntu 选择了错误的目录