以下是我的代码:我正在try 连接到SuperBase,我收到了两次控制台400错误,但随后它连接了.这是由于USERID变量,如果我放入USERID字符串,我不会得到错误.正在此useEffect上方的函数中更新UserID.

useEffect(() => {
async function example() {
try {

          const { data, error } = await supabase
          
            .from('profiles')
            .select()
            .eq('id', userId );
    
      };
     
      example();
    }, [userId]);

我在底部添加了这个,但它从未连接到一起.

if(userId) return: example()

我能做些什么来避免任何控制台错误.我不能在挂钩上使用条件来避免使用空字符串运行useEffect.我是否需要设置useProviders来在组件外部设置变量,这样在组件运行之前就设置了USERID变量?

推荐答案

您必须在钩子的开头判断userId值的可用性;try 添加以下内容:

useEffect(async () => {
    if (!userId) return;
    const { data, error } = await supabase
            .from('profiles')
            .select()
            .eq('id', userId );
}, [userId]);

Reactjs相关问答推荐

Inbox Enum类型以React组件状态时出现TypScript错误

如何防止使用useCallback和memo重新渲染

如何在Reac.js中通过子组件和props 调用父组件函数?

TypeError:SearchProduct.get()获得了意外的关键字参数查询'

这两个子元素在Reaction Native中使用的有什么不同?

React-React中是否完全支持基于类的组件?

如何在MUI x图表条形图上放置圆角?

太多的重新渲染 - React 中的无限循环.如何使用React.effect并使用fetch?

强制 useEffect 仅运行一次

在遵循 react-navigation 的官方文档时收到警告消息

React Native 背景动画反转

如何在 JS 中绘制具有不同笔画宽度的样条线

ReactJS 动态禁用按钮

null 不是对象(判断RNSound.IsAndroid)

使用 React Router v6 监听来自不同组件的组件状态变化

使用输入类型文本对 useState 和日期做出react

SonarCloud 代码覆盖率不适用于 Github Action

列表应该有一个唯一的关键props

useEffect 仅在跟随链接后有效,不适用于直接链接

根据计算 ReactJs 更新输入字段