2017-06-20 74 views
1

我有一个async/await函数,我希望使用结果在我的React本机应用程序中有条件地渲染一个jsx组件。React JSX组件和等待

这是返回承诺的类方法。该方法已声明异步。

问题是我想用这个结果有条件地渲染一些jsx。

const hasEdit = await perms.has('/page', 'edit'); 
 

 
return (
 
     <div> 
 
     { hasEdit && 
 
     <Button 
 
      icon='pencil' 
 
      text='EDIT' 
 
      onTouchTap={() => { props.onEdit(); } } 
 
     /> 
 
     } 
 
     </div> 
 
    )

这将返回: 有效反应的元素(或空)必须返回。您可能返回了未定义的数组或其他无效对象。

任何想法,我可以尝试这个?任何东西将不胜感激。

+2

'render'不能是异步的。 – Bergi

+0

将该异步调用放在'componentDidMount'中,并将结果保存为反应状态 – azium

+0

如果使用redux,那么相同?将结果推到反应状态并在渲染中使用它? –

回答

0

移动componentDidMount的建议,使其成为异步,然后对结果进行setState使其在渲染中可用。渲染不能是异步。