【问题标题】:should set state in callback after sorting function?排序函数后应该在回调中设置状态吗?
【发布时间】:2018-08-10 00:31:37
【问题描述】:

在我的 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]
  })
})

【问题讨论】:

    标签: javascript react-native callback lodash


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-07-11
      • 2019-07-20
      • 2019-12-29
      • 2019-08-09
      • 2017-08-17
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多