javascript - IE11中的reactjs setState永远/阻塞UI
问题描述
我有这个逻辑,我必须在 IE11 (rip) 中支持,我从服务器获取大量 HTML
使用反应 16.5
一切都很好而且很花哨,直到我将它解析成一个列表,然后将解析后的列表设置为状态数组
我items
作为道具传递给 List.jsx 组件
这里的问题是我在调用它的过程中和当我.map
通过这个列表分析它时,它需要 GUI foreverrrr 来呈现并且它冻结了 UIrender
setState
所以我决定 react 不会偶尔产生以防止我猜的 UI 阻塞?
因此,在该组件中,我想像使用 jquery 一样return false
在内部shouldComponentUpdate
操作 DOM,并显式附加来自服务器的已解析项目,以便我可以在循环逻辑中产生。
如果您知道如何使用 React 解决 IE11 冻结问题,因为我无法使用虚拟列表,您会怎么做;所有项目都必须在 DOM 中,否则将使用虚拟列表。(除了重构整个页面逻辑我不能使用虚拟列表)
我是否应该setState
多次调用,每次将更多内容附加到顶级状态的列表数组中,直到所有项目都被附加,这样它就可以处理由setState
我的 List.jsx 组件或,或,或.. .
我会尝试编写一些代码示例
function getItems() {
return [{item: '<tr><td>one</td></tr>', attributes: {}}, {item: '<tr><td>two</td></tr>', attributes: {}}]
}
class Parent extends React.Component {
state = {
items: [],
}
componentDidMount() {
this.setState({
items: getItems()
})
}
render() {
return (
<List
items={this.state.items}
/>
)
}
}
class List extends React.Component {
render() {
return (
this.props.items.map((item, i) =>
<tr
key={i}
>
{i}
</tr>
)
)
}
}
任何建议都很棒,感谢您的宝贵时间!
解决方案
推荐阅读
- ruby-on-rails - Rails 5.x:如何在运行时添加路由而不覆盖原始路由表?
- php - 在 wordpress 中重复发布时出现 503 错误
- react-native - 在 react-native expo 应用程序中使用初始化 firestore 的正确方法
- c - 为什么在代码中没有返回值时,函数将值返回给前一个函数?
- node.js - 无法在实时服务器上的 highcharts-export-server 中获取数据标签
- javascript - 由于逗号而不添加 2 值(javascript)
- oracle - Oracle Sqlplus 循环重复调用sql脚本
- windows - 如何在不解释变量的情况下打印/回显 PATH 等 Windows 环境变量?
- opencv - 我如何读取不是由 openCV 编写的 xml
- kubernetes - Kubernetes 集群没有 Kubernetes Master