Javascript 排序函数后是否应在回调中设置状态?

Javascript 排序函数后是否应在回调中设置状态?,javascript,react-native,callback,lodash,Javascript,React Native,Callback,Lodash,在componentDidMount方法中,我将数据划分为两个单独的列表,然后设置这两个列表的状态,以便我的UI能够呈现它们。我有两个问题: componentDidMount()方法是否是对从API调用接收的列表进行分区的适当位置 代码是否有可能在lodash完成分区之前尝试设置状态(假设它是一个很长的列表)?如果是这样,我尝试了一个.then()回调,但是我得到一个错误,说.then()不是函数 componentDidMount(){ const{data}=this.props let

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

  • componentDidMount()方法是否是对从API调用接收的列表进行分区的适当位置

  • 代码是否有可能在lodash完成分区之前尝试设置状态(假设它是一个很长的列表)?如果是这样,我尝试了一个.then()回调,但是我得到一个错误,说.then()不是函数

  • componentDidMount(){ const{data}=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]
      })
    })
    
    让currentTime=moment();
    let sortedPosts=u.partition(this.state.listViewData,函数(o){
    返回(o.isActive | |(新日期(o.scheduledativeend)){
    这是我的国家({
    futureListViewData:sortedPosts[0],
    currentListViewData:sortedPosts[1]
    })
    })
    
    componentDidMount()方法是否是对从API调用接收的列表进行分区的适当位置

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

    代码是否可能在lodash完成分区之前尝试设置状态(假设它是一个很长的列表)?如果是,我尝试了.then()回调,但我得到一个错误,即.then()不是函数

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

    componentDidMount()方法是否是对从API调用接收的列表进行分区的适当位置

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

    代码是否可能在lodash完成分区之前尝试设置状态(假设它是一个很长的列表)?如果是,我尝试了.then()回调,但我得到一个错误,即.then()不是函数

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