gpt4 book ai didi

javascript - 应该在排序函数之后的回调中设置状态吗?

转载 作者:行者123 更新时间:2023-12-01 01:48:29 24 4
gpt4 key购买 nike

在我的 componentDidMount 方法中,我将数据划分为两个单独的列表,然后设置两个列表的状态,以便我的 UI 可以呈现它们。我有两个问题:

  1. componentDidMount() 方法是否适合对从 API 调用接收到的列表进行分区?

  2. 代码是否可以在 lodash 完成分区之前尝试设置状态(假设它是一个非常长的列表)?如果是这样,我尝试了 .then() 回调,但收到一条错误消息,指出 .then() 不是函数。

componentDidMount() { const { 数据 } = this.props;

let currentTime = moment();

let sortedPosts = _.partition(this.state.listViewData, function(o) {
return (o.isActive || (new Date(o.scheduledActiveEnd)) < currentTime);

}).then(() => {
this.setState({
futureListViewData: sortedPosts[0],
currentListViewData: sortedPosts[1]
})
})

最佳答案

is the componentDidMount() method the appropriate place to partition a list received from an API call?

是的,componentDidMount 是放置异步代码的好地方,例如获取数据然后解析响应。

is it possible for the code to attempt to set the state before lodash has completed the partitioning (lets say its a really long list)? if so, I tried a .then() callback but I am getting an error saying .then() is not a function.

不,_.partition是同步的。它返回一个数组的数组,而不是一个 promise 。如果您在一个大数组上调用 _.partition,线程将阻塞,直到完成对数组的分区。

关于javascript - 应该在排序函数之后的回调中设置状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51777411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com