如何映射列表并在其中实现异步?

以撒
renderDuration(x) {
  return 'abc'
}

render() {
  return (
    <View>
      {this.props.list.map(x => (
        <Text>{this.renderDuration(x)}</Text>
      ))}
    </View>
  )
}

上面的代码运行正常。这种情况是非常基本的,即循环列表,并为每个元素调用方法renderDuration并获取单个字符串值。现在看下面。

async renderDuration(x) {
  let someAsyncOpt = await getTextFromSomewhere();
  return someAsyncOpt;
}

因此,一旦将相同的方法更改为异步方法,它就会中断并引发异常

永久违反:永久违反:对象作为React子对象无效(找到:键为{_40,_65,_55,_72}的对象)。如果要渲染子级集合,请改用数组。

我知道可行的选择是先获取所需的任何数据,而不是在渲染时获取任何数据。这个问题基本上是试图探索在映射时执行异步操作的可能性(如果有意义)吗?

更新:

我已包含以下代码,以表明它与从异步opt返回的错误类型无关。基本上是我们包含关键字的那一刻async,它将中断

async renderDuration(x) {
  return 'abc';
}
宠物小精灵

(更新)尝试使用此功能:

class Alpha{

// ...

// Update :
async renderDuration(x) {
   let someAsyncOpt = await Promise.all(getTextFromSomewhere());
   return someAsyncOpt;
}

render() {
  return (
    
     // Old :
      <View>
        {this.props.list.map(x => (
          <Text>{this.renderDuration(x)}</Text>
        ))}
      </View>
    
     // Update :
     <View>
      {
        this.props.list.map( 
            async (x) => { await this.renderDuration(x) } 
        );
      }
     </View>

    
  )
}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何映射列表并在其中传递@material-ui/icons

如何动态加载DLL并在其中使用类(实现已知接口)[C#]

如何遍历每个列表并在其中添加本地存储项

如何创建dl标签并在其中显示数据

如何绘制矩形并在其中放置文本

如何获取当前的shell并在其中执行命令?

Haskell MTL:如何退出monad并在其中获取价值?

如何动态加载自己的库并在其中调用方法?

如何访问模板元素并在其中填充模型数据

如何从C ++代码打开新终端并在其中编写

如何打开新的cmd窗口并在其中执行for循环?

如何选择特定工作表并在其中显示数据?

如何制作自适应块并在其中添加块?

如何读取 SVG 文件并在其中绘制内容?

我将如何在其中实现JavaScript

如何在列表上映射异步函数?

java如何在其中传递通用元素的列表

我如何显示一个str,在其中显示属于某个条件的列表中的所有项目并在日期范围内?

在列表中查找所有重复项,并在其中添加一个数字

奇怪的循环并在其中添加函数

清除画布并在其中再次绘制

然后在其中插入异步功能

如何创建单个对象并在其中推送多个密钥对值?

如何在Chrome扩展程序中打开页面并在其中运行jQuery

Lucene 6.0!如何实例化BooleanQuery并在其中添加其他搜索查询?

如何使用SSL创建python websocket并在其中使用cookie?

如何查找调用了哪些 Method 方法并在其中声明了变量

如何使用循环创建表并在其中打印变量 使用PHP

如何从URL中提取文件名并在其中添加单词?