2017-06-20 99 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使其在渲染中可用。渲染不能是異步。