【发布时间】:2019-07-19 04:54:49
【问题描述】:
我正在应用<Suspense /> 和lazy() 来优化我的项目。到目前为止一切正常,但我注意到处理 DOM 的方式发生了一些小变化,这让我对自己的工作方式有些困惑。
让我们在 CMS/仪表板上下文中假设这种情况。当用户访问/products/ 时,react-router 会处理这个<ProductPage /> 容器,获取组件并将其加载到页面上。
在这个<ProductPage /> 容器中,有一个显示产品列表的数据表,以及一个用于添加新产品的添加按钮。单击此Add buton 将触发<Modal /> 以显示表单。
// products.js
class ProductsPage extends React.Components {
...
render() {
<Grid>
<AddButton />
<ProductsDatatable />
{ this.state.isShowingAddingProductForm && (
<AddModal />
)}
</Grid>
}
}
我在这个项目中使用 Material-UI 中的所有这些组件(数据表、按钮和模式)。
关注
我是
lazyLoading<AddModal />,一旦用户第一次点击<AddButton />,就会导入addModal.chunk.js文件。这里的权衡是来自 M-UI 的动画。一旦我关闭模态,DOM 将从页面中删除,因此表单关闭时不会有动画。虽然这只是一个小的淡入淡出动画。如果我删除
this.state.isShowingAddingProductForm,动画将返回。但是在这里我发现即使用户不想添加新产品,网络也会加载addModal.chunk.js。稍微想一想,您就会知道可能有 4 或 5 个其他模式在使用相同的逻辑。
问题:处理这种模态场景的最佳方法是什么?我仍然想保留 Material-UI 中的惰性导入和小型内置动画。
提前致谢,
【问题讨论】:
标签: javascript reactjs modal-dialog material-ui lazy-loading