javascript - 材质 UI 可滚动选项卡未在 Internet Explorer 中呈现
问题描述
我正在为我们的 React Web UI 中的选项卡控件实现 Material UI。这在 Chrome 中运行良好,但第二次我们尝试在 IE 中测试,页面拒绝加载,控制台抛出以下错误:
未处理的承诺拒绝不变违规:超过最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。React 限制了嵌套更新的数量以防止无限循环。
下面是围绕 Material-UI 添加的代码。如前所述,这在 Chrome 中运行良好,但似乎在 IE 中失败了。中断 IE 的特定行是该scrollable={true}
行 - 如果将其删除或更改为 false,则页面将呈现(尽管没有我们需要的滚动)。不确定在 IE 中关于 Material-UI 是否有任何特别需要注意的问题?
var menuString = isList ? null : <AppBar position="static" color="default"><Tabs
scrollable={true}
value={activeItem}
onChange={this.handleTabSelection}
scrollButtons="auto"
classes={{ indicator: "tabsIndicator" }}>
{
jsxData.map((item, index) => {
return (
<Tab key={index} value={item.name} label={item.name}
classes={{ selected: "tabSelected" }}/>
);
})
}
</Tabs></AppBar>;
return <Segment basic className={"report-group-render " + (isList ? "list" : "tabs")}>
{menuString}
</Segment>;
解决方案
答案是jsxData.map(...)
在最终用它的报告数组呈现之前返回一个空数组进行几次迭代。Chrome 会忽略/吞下这些初始的空数组问题而不会引起关注,因为 IE 决定自行破坏。
解决方案是将第一行更改为以下内容:
var menuString = isList || jsxData.length === 0 ? null : <AppBar position="static" color="default"><Tabs
推荐阅读
- python-3.x - Pygame 总是感知两个矩形对象之间的碰撞
- excel - 检查excel中的重复提醒
- c++ - openmp 构造,memcpy 在 for 循环中导致错误的输出值
- reactjs - 使用 axios 在 asp.net core react 应用程序中调用控制器 api 时出现代码 405 失败
- sql - 对话结束后 SQL Broker sys.conversation_groups 未清空
- rest - 在 API Rest 上实现国际化的最佳方法
- ngx-leaflet - 我可以在使用 Angular Elements 构建的 Web 组件中显示传单地图吗?
- ios - 为什么 Linking.getInitialURL 总是返回 null?
- angular - 为什么这个 post http 请求在 Angular 中不起作用?
- android - 在 Android 中构建响应式 UI