【发布时间】:2019-12-18 23:20:01
【问题描述】:
我正在创建一个包含 cmets 线程的应用程序(例如 reddit),而现在延迟确实很大。
真正简化的想法基本上是:
我有一个array,其 id 为 cmets [01, 02, 03, n]
<ParentComponent>
<Flatlist
data={array}
renderItem={(commentId) => <CommentComponent commentId={commentId} />}
/>
</ParentComponent>
在<CommentComponent /> 内部,我正在使用 id 发出请求并获取要呈现的内容
const CommentComponent = ({ commentId }) => {
const [comment, setComment] = React.useState({});
useEffect(() => {
const c = getComment(commentId)
setComment(c)
})
return (
<View>
<Text>{comment.text} />
<Flatlist
data={comment.arrayComments}
renderItem={(commentId) => <CommentComponent commentId={commentId} />}
/>
</View>
}
电话的答案是评论的文本以及该评论的 cmets
{
text: 'Lorem ipsum',
comments: [05, 06, 07, 08, n]
}
我正在使用递归来渲染评论的 cmets,除了我在 <Flatlist /> 内渲染 <Flatlist /> 内 <Flatlist /> 内得到的荒谬延迟之外,一切正常...
<Flatlist /> 中的每个项目都需要调用渲染,所以我得到了荒谬的渲染数量
其中一些线程有 3 位数的 cmets,我怎样才能以更智能的方式进行此操作?
我在想我必须在每个<CommentComponent /> 之外进行获取,但是获取所有这些 cmets 可能需要很长时间,而且感觉不对。
任何人都知道如何在滚动时不出现这种荒谬的延迟来完成这项工作?
【问题讨论】:
标签: react-native fetch react-native-flatlist