JavaScript/React-异步数组映射
我正在使用React Native。我想创建一个非常长的列表。 列表组件中的每个元素都是一个列表项组件。 我的问题是组件加载时间太长。该列表是使用数组.map()创建的。 请看一下代码 我的问题是,是否有可能创建异步映射(),这样列表中的元素将一个接一个地加载,而组件不会等待那么久 尝试过类似的东西,但对我来说没有任何效果。有人能帮忙吗JavaScript/React-异步数组映射,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我正在使用React Native。我想创建一个非常长的列表。 列表组件中的每个元素都是一个列表项组件。 我的问题是组件加载时间太长。该列表是使用数组.map()创建的。 请看一下代码 我的问题是,是否有可能创建异步映射(),这样列表中的元素将一个接一个地加载,而组件不会等待那么久 尝试过类似的东西,但对我来说没有任何效果。有人能帮忙吗 class List extends React.Component { render() { // very big array
class List extends React.Component {
render() {
// very big array
var list = [...Array(5000).keys()];
return (
<Content>
{
list.map((item, index) => {
return (
<ListItem text={item} key={index}/>
);
})
}
</Content>
);
}
}
class ListItem extends React.Component {
render() {
return (
<Button>
<Text>{this.props.text}</Text>
</Button>
);
}
}
类列表扩展了React.Component{
render(){
//超大阵列
var list=[…数组(5000).keys()];
返回(
{
list.map((项目、索引)=>{
返回(
);
})
}
);
}
}
类ListItem扩展了React.Component{
render(){
返回(
{this.props.text}
);
}
}
您链接到的异步映射代码可以正常工作,但它并不能满足您的需要。从阵列中渲染5000个组件所需的时间仍然需要很长时间,async只允许您在完成时异步执行操作
从用户体验的角度来看,几乎不需要渲染那么多元素。相反,您应该根据需要加载数据(用户向下滚动到某一点)
选项1
因此,数据流逻辑如下所示:
如果内存中有数组,可以尝试使用array.slice()将数组划分为更小的块,并异步呈现每个块。您链接到的异步映射代码可以工作,但它无法完成您希望它完成的任务。从阵列中渲染5000个组件所需的时间仍然需要很长时间,async只允许您在完成时异步执行操作 从用户体验的角度来看,几乎不需要渲染那么多元素。相反,您应该根据需要加载数据(用户向下滚动到某一点) 选项1 因此,数据流逻辑如下所示:
如果内存中有数组,可以尝试使用array.slice()将数组划分为较小的块,并异步呈现每个块。使用异步无法解决此问题。数组的大小很大,映射意味着运行for循环,所以for循环for(比如说5000个项目)需要时间 限制数组的大小,或者根据需要以100个为一组递增 去吧
使用async无法解决此问题。数组的大小很大,映射意味着运行for循环,所以for循环for(比如说5000个项目)需要时间 限制数组的大小,或者根据需要以100个为一组递增 去吧
因此列表中的元素将一个接一个地加载,组件不会等待太多时间
如果组件“不等待”,5000个列表项将如何呈现?@JaromandaX这正是我试图实现的…:)您可以使用延迟加载,在这种加载中,先加载10个项目,然后在用户向下滚动时加载额外的10个项目。加载下10项时,只需将其附加到现有列表中。@AnilKumar这不是所需的行为。他们应该一个接一个地加载,直到立即结束。我只是不想让组件等待…这样列表中的元素会一个接一个地加载,而组件不会等待那么久
如果组件“不等待”,5000个列表项将如何呈现?@JaromandaX这正是我试图实现的…)您可以使用延迟加载,在这种加载中,先加载10个项目,然后在用户向下滚动时加载额外的10个项目。加载下10项时,只需将其附加到现有列表中。@AnilKumar这不是所需的行为。他们应该一个接一个地加载,直到立即结束。我只是不想让组件等待。。。