コードを使用することはできません以下の通りです:が反応 - (トライキャッチ内からJSXを返す).MAP内Catchブロックを試してみてください
return (
<MuiThemeProvider>
<GridList>
{singleProd.map(function(product) {
// console.log(product)
let fileID;
try {
api.GetFile(product.relationships.main_image.data.id)
.then((file) => {
fileID = file.data.link.href;
console.log(fileID)
return (
<Tile name={product.name} id={product.id} link={fileID} key={product.id} />
)
})
}
catch(e){
console.log('product has no main image');
return (
<Tile name={product.name} id={product.id} link={fileID} key={product.id} />
)
}
})}
</GridList>
</MuiThemeProvider>
)
エラーは次のとおりです。Cannot read property '_currentElement' of null
診断は、これまでのところです戻り値はそれぞれtry catchブロックでそれぞれラップされるため、.map関数では何も返されません。
try catchの外側にリターンを追加すると、それは成功します。
.map内の各オブジェクトがtryキャッチで実行されるように、どのようにフォーマットする必要があるのだろうか。試行が成功すると、そのjsxが返されて使用されます。そうでなければ、catch jsxが返され、使用されます。
上記のコードをどのように再構築するかについてのご意見はありますか?
その他の関連情報:オブジェクトの配列を返す外部API呼び出しを使用して材料UIタイル
- 、したがってマップ
- 各オブジェクトのタイルが返されるとの一部となるのグリッドリスト。
オースティンにお返事ありがとうございます。私がこのようにした理由は、配列として製品のリストを取得する 'componentDidMount'内に初期APIコールがあるからです。次に、配列内の各製品を取得し、さらにAPIコールを使用してその製品のファイルリンクを取得する必要があります。その後、アレイからの製品情報とファイルリンクの両方を使用して、個々の製品ごとにタイルを作成します。 –
私は、この場合、両方のAPI呼び出しが 'componentDidMount'に残っている必要があります。何らかの方法で結合し、コンポーネントの' state'に追加する必要があります。これは、レンダー機能で行うよりもはるかに良いでしょう。 –