首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >function & Javascript -呈现字段基于异步函数的结果

function & Javascript -呈现字段基于异步函数的结果
EN

Stack Overflow用户
提问于 2022-02-13 14:43:07
回答 1查看 29关注 0票数 0

我有一个异步函数,希望使用它来查询和返回一个值,如下所示:

代码语言:javascript
运行
复制
  async function checkProfileFeature(values: any) {
    const data = await client.query<any>({
      query: PROFILE_QUERY,
      variables: { userId: 1, profileId: values.id },
    });

    if(something) {
      return true
    }
  } 

基于此返回值,我希望显示或不显示一个字段:

代码语言:javascript
运行
复制
  {checkProfileFeatures(profile) === true && (
    <Input .... />
  )}

不幸的是,我无法让它同时返回值并在其结果上显示字段。有推荐的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-13 15:14:02

checkProfileFeature有一个async关键字,这基本上意味着它将返回一个承诺,在您的例子中是Promise<boolean | undefined> (因为您只在满足某个条件时才返回true )。checkProfileFeatures(profile) === true永远不会是真的,因为正如我已经提到的,您的函数返回一个承诺。您想要做的是将您的checkProfileFeatures放在useEffect中,然后将查询的结果存储在某种类型的存储或useState中。

代码语言:javascript
运行
复制
// Run on first render
useEffect(() => {
 const fetchQuery = async () => {
  await checkProfileFeature({});
 }

 fetchQuery();
}, [])

然后,在checkProfileFeature内部保存结果

代码语言:javascript
运行
复制
async function checkProfileFeature(values: any) {
    const data = await client.query<any>({
      query: PROFILE_QUERY,
      variables: { userId: 1, profileId: values.id },
    });

    if(something) {
      setSomethingHappened(true);
    }
  } 

作为回报,您可以使用这个获取的值

代码语言:javascript
运行
复制
{somethingHappened === true && (
    <Input .... />
  )}

当然,您仍然需要弄清楚如何处理加载状态,您可能需要创建一个额外的状态来判断请求是否仍在运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71101707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档