- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在授权方面一切正常。我什至有一个加载状态设置,以便加载器显示直到状态更改,但我在重新加载时仍然会闪烁。这种闪烁只发生在 Supabase 上。我之前使用的是 Firebase 版本,它与我的代码完美配合。
这里有一个视频供引用:https://imgur.com/a/5hywXj5
编辑:更新代码到当前版本
export default function Navigation() {
const { user, setUser } = useContext(AuthenticatedUserContext);
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
const session = supabase.auth.session();
setUser(session?.user ?? null);
const { data: listener } = supabase.auth.onAuthStateChange((_: any, session: any) => {
setUser(session?.user ?? null);
});
setIsLoading(false);
return () => {
listener?.unsubscribe();
};
}, []);
if (isLoading) {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<ActivityIndicator color={Theme.colors.purple} size="large" />
</View>
);
}
return (
<NavigationContainer linking={LinkingConfiguration}>{user ? <AppStack /> : <AuthStack />}</NavigationContainer>
);
}
最佳答案
为其他人回顾一下,onAuthStateChange
不会在第一页加载时执行,因此您使用 getUserAuthStatus
异步函数触发它。但是 session()
函数不是异步的,如果没有用户 session ,将立即返回一个 null
的结果,或者返回一个已存储在 localStorage 中的 session
。
在这种情况下,getUserAuthStatus
的结果将始终返回 null。然后 onAuthStateChange
将触发 SIGNED_IN
事件和随后将设置用户的 session 。
此外,onAuthStateChange
函数应该在您执行 session 步骤之前注册,以便捕获任何触发的事件。在当前形式中,可以在 session()
调用之后但在注册处理程序之前直接触发事件。
所以回顾渲染步骤将是:
isLoading: true
user: null
isLoading: false
user: null
isLoading false
user: {...}
据我所知,直接使用 session 而不认为它是异步的就可以解决问题。
关于javascript - Supabase onAuthStateChanged - 如何正确等待请求完成以防止使用 useEffect 闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72385641/
Supabase url 和匿名 token 很容易从任何使用它们的站点检索。这通常不是内部表的问题,因为您可以设置 RLS 来限制用户查看/修改/删除这些表上的数据。但是我找不到任何可以将 supa
我的网站希望减少用户可以对图像执行的操作...因此为了增加安全性,我们希望将图像源保留为 base64 字符串而不是 supabase 存储 URL。这可以通过supabase存储实现吗?我是否必须将
我正在尝试制作一个输入表单,用户可以在其中同时更改一行中的多个值,这些值使用 update() 方法提交到数据库。这些值作为默认值从 Supabase 表中读取到多个输入字段中,用户可以编辑这些值并稍
我们正在尝试 Supabase并发现它很棒,尤其是关于实现用户身份验证是多么容易。到目前为止,我们一直在使用官方 JavaScript 客户端库,并且我们尝试的一切都有效(为开发人员点赞!)。 然而,
在 Supabase 文档中,它解释了如何“加入”表以获取数据 const { data, error } = await Supabase .from('countries') .selec
关闭。这个问题是not about programming or software development .它目前不接受答案。 这个问题似乎不是关于 a specific programming
我在 Node JS 中间件中使用 Supabase。我正在开发一个邀请功能,它通过 REST 端点接收现有 supabase 用户的电子邮件地址。现在它应该查询用户表以获取用户 ID。但这似乎不起作
我试图在我的表中插入一行,它启用了 RLS 并且 Enable insert for authenticated users only政策补充。不幸的是,即使我正确登录,我也无法插入。 重现步骤: 创
我尝试使用命令 supabase db push 通过它的 cli 将本地迁移推送到 supabase 数据库.它向我显示的错误是: Error: ERROR: must be owner of ta
我正在尝试实现 Facebook、Google 和 Twitter 身份验证。到目前为止,我已经在各自的开发人员平台中设置了应用程序,将这些 key / secret 添加到了我的 Supabase
我怎么才能先按出版物排序,再按标题排序呢?。这是错误的:。如果我将它们分开,第二行将覆盖第一行。
在授权方面一切正常。我什至有一个加载状态设置,以便加载器显示直到状态更改,但我在重新加载时仍然会闪烁。这种闪烁只发生在 Supabase 上。我之前使用的是 Firebase 版本,它与我的代码完美配
我正在尝试构建一个包含 Supabase 身份验证的 Vue.js 应用程序。我希望在注册时使用内置的 Supabase signUp() 方法来处理其他用户数据。为此,我向 SignUp 对象添加了
当我在 Supabase 上使用 Postgres 数据库时,我运行以下命令,npx prisma migrate dev --name init,但出现以下错误(第一个命令在截图): Error:
当我在 Supabase 上使用 Postgres 数据库时,我运行以下命令,npx prisma migrate dev --name init,但出现以下错误(第一个命令在截图): Error:
我正在为工作创建一款Next应用程序,所以我一直在家里和公司的电脑上开发它。昨天晚上,我在家里的电脑上做这个项目,它已经安装了Supabase包。我把我的零钱放到了我的工作电脑上。Supabase请求
似乎我在尝试从我的表中提取数据时总是返回一个空数组。在遵循文档和几个教程之后,这就是我的做法。 const [tableData, setTableData] = useState([]); as
您好,我有以下问题: 我想用“新的”SupaBase 服务测试一些小东西。 我还使用示例 angularapp 实现了所有内容。 https://stackblitz.com/edit/supabas
我构建了一个如下所示的身份验证函数: const handleLogin = async (type) => { const { user, error } = type ===
我正在尝试按照自述文件说明进行操作,以便通过此 link 在我的本地计算机上安装 Quivr。第一次,但我卡在了第 4 步。 假设以下代码是 shell 命令,我如何在 SQL 中运行它? chmod
我是一名优秀的程序员,十分优秀!