Javascript 异步映射ES6+;反应

Javascript 异步映射ES6+;反应,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我想做一个异步迭代器.map,但我不知道它是如何正确完成的。我有这个 async componentDidMount() { await this.props.existingLettersActions.fetchExistingLetters(); } render () { var example= ''; var x = [ { id: 1, name: 'asdf' },

我想做一个异步迭代器.map,但我不知道它是如何正确完成的。我有这个

async componentDidMount() {
    await this.props.existingLettersActions.fetchExistingLetters();        
}

render () {
var example= '';
    var x = [
        {
            id: 1,
            name: 'asdf'
        },
        {
            id: 2,
            name: 'asdf'
        }
    ]
    if (this.props.letters) {
        example = this.props.letters.map(function(item, i) {
            return (
                <tr  key={i} styleName="container">
                    <td>{item.id}</td>
                    <td>{item.name}</td>
                </tr>
            );
        });
    }
}

return (
   {example}
)
异步组件didmount(){ 等待此消息。props.existingLettersActions.fetchExistingLetters(); } 渲染(){ var示例=“”; 变量x=[ { id:1, 名称:“asdf” }, { id:2, 名称:“asdf” } ] 如果(这个。道具。字母){ 示例=this.props.letters.map(函数(项,i){ 返回( {item.id} {item.name} ); }); } } 返回( {示例} )
如果我使变量“x”上的映射正确工作并正确绘制,但如果我放置this.props.letters,则会跳转一个错误,表示this.props.letters.map不是函数。如何实现异步?

console.log
不太可靠,因为它可以向您显示props.letters有一个值,但很可能是在您的render()方法被触发时,这个.props.letters还没有填充数据

很可能是组件第一次渲染时,this.props.letters将未定义(或类似)

因此,最好在渲染前检查要迭代的道具,例如:

render () {
    if(!this.props.letters) {
        return <div>Loading...</div>
    }

    return this.props.letters.map((item) =>
        <tr  key={item.id} styleName="container__body__table__body">
            <td>{item.id}</td>
            <td>{item.name}</td>                        
        </tr>
    );
}
render(){
如果(!this.props.letters){
返回加载。。。
}
返回此.props.letters.map((项目)=>
{item.id}
{item.name}
);
}

这是非常模糊的。你说的asnycronous是什么意思?
字母列表是这样填写的,还是什么意思?在不知道数据是如何进入的情况下,很难给出建议。请看,我们无法根据您在问题中提供的内容为您提供帮助,因为您没有显示填充
this.props.letters
的异步过程。错误消息也很有趣,因为它告诉我们
this.props.letters
不是
null
未定义的
,但它也不是数组,所以…@mari数据来自api,我想异步绘制tr。如何使映射异步工作?@T.J.Crowder数据来自api,我想异步绘制tr。我怎样才能使映射异步工作?@jmrosdev:你不能,
map
不是为异步使用而设计的。您还可以做其他事情,但它们取决于您尚未提供的信息。再一次:告诉我们你在处理什么,我们可以帮助你。如果你不,我们就不能。请使用堆栈片段(工具栏按钮
[]
来更新您的问题,使用runnable演示问题(可能使用
setTimeout
来模拟异步数据填充)。堆栈代码段支持React,包括JSX。嗯…我也有同样的错误。。。this.props.letters.map不是函数,这意味着this.props.letters中的任何内容都不是数组。