firebase - SwiftUI firebase - 更改用户的显示名称 - 如何立即刷新 View

标签 firebase firebase-authentication swiftui

我使用 swiftui 创建了一个基本的 firebase 登录应用程序(使用本教程:https://www.youtube.com/watch?v=FhLEwqyVSjE)。一切正常。

在我的 ContentView.swift 中,我添加了一个 TextField 来更改用户的显示名称。为此,我使用以下逻辑在 SessionStore.swift 中添加了一个 changeDisplayName 函数:

let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = displayName
changeRequest?.commitChanges { (error) in
  // ...
}

该函数由我的 ContentView 中的按钮调用。更改 displayName 也有效,但我的 ContentView 仍然保留旧的 displayName 直到我重新启动应用程序,因为只有这样 ContentView 才会再次调用 session.listen() 并从 SessionStore 获取新的 displayName。

为了解决这个问题,每当我的 ContentView 调用 SessionStore 中的 changeDisplayName 函数时,我都会调用 session.unbind() 然后在我的 ContentView 中调用 session.listen()并且不返回错误。这有效,每次更改时我的 ContentView 都会重新加载新的 displayName。

这是好的做法还是我缺少解决此问题的更简洁的解决方案?

最佳答案

也许尝试使用 Auth.auth().currentUser?.reload()。这可能行不通,因为我过去在使用 isEmailVerified 时遇到过麻烦,但我想这值得一试!

关于firebase - SwiftUI firebase - 更改用户的显示名称 - 如何立即刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60248476/

相关文章:

animation - SwiftUI:自定义模态动画

firebase - 如何处理登录异常?

reactjs - 如何在 react 中删除新的 firebase onAuthStateChanged 监听器

SwiftUI 分段控制 View 刷新时选定的分段文本动画

reactjs - 处理前端的后端错误状态

android - facebook登录仅显示以前在flutter应用中登录的帐户

swift - 同时添加多个SCNNode

android - Firebase异常 : Failed to bounce to type in Android but Model class properties and JSON properties are same

firebase - Firebase实时数据库检查有两个值?

node.js - 当我调用 admin.database() 时,每次都会在 firebase 中打开一个新的数据库连接吗?