我在 Magento PWA 中调用了一个名为 cmsBlock 的通用组件。我不能对该组件进行太多更改,因为它在许多页面中使用。但是,在我的 CartPage 上,如果 CMS 块抛出错误(即 CMS 块被禁用并且找不到标识符),我想呈现 null。
问题是在 cmsBlock.js 中,一个错误实际上呈现了一些东西(我可以添加一个类名,但这基本上是我可以对那个组件做的所有事情,所以不能在 csmBlock 上使用 ErrorBoundary)所以我无法检查 null 或 undefined :
const { loading, error, data } = useQuery(GET_CMS_BLOCKS, {
variables: { identifiers }
});
if (loading) {
return fullPageLoadingIndicator;
}
if (error) {
return <div>Data Fetch Error</div>;
}
所以这意味着我在调用 CMS 块时总是正确的。在我的购物车页面中,我尝试了这个(cartPage.js):
const cmsBlock = <CmsBlock identifiers={'cartpage-block'} />;
const cmsBlockHolder =
cmsBlock ? (
<div className={classes.cmsblock}>
</div>
) : null;
但是我需要添加一个额外的条件来检查 cmsBlock 组件是否返回错误,因为我根本不应该允许渲染 cmsBlockHolder。关于如何在不更改 cmsBlock.js 的情况下解决此问题的任何想法?