FlatList将单个项目转换为数组

时间:2019-02-05 09:16:01

标签: javascript react-native

在我的应用程序中,我正在使用axios来获取数据。众所周知,我们不能将FlatList中的数据呈现为对象,它必须是数组。当我从服务器获取数据时,如果它是单个项目,则它是对象;如果它不止一个,它将返回我作为数组。如何在清单中显示我的单个项目?

状态:

  func hasLaunchPop() {
   let isshowPop: Bool = UserDefaults.standard.bool(forKey: "showPop")
        if isshowPop == true  {
            popView()
            UserDefaults.standard.set(false, forKey: "showPop")
        }
    }

我的平面列表实例;

override func viewDidLoad() {
    super.viewDidLoad()
    hasLaunchPop()
}

2 个答案:

答案 0 :(得分:2)

只需检查事件是否不是数组,即可在数组中返回它:

.... 
      data={Array.isArray(this.state.events)
         ? this.state.events
         : [this.state.events]}
.... 

答案 1 :(得分:2)

在未将数据存储到状态之前,我会确保数据是一个数组。 Array.isArray()是检查某物是否为数组的正确方法。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray

可以创建一个简单的函数

  1. 检查数组,
  2. 如果它是一个数组,则返回它,
  3. 如果不是数组,请将其转换为数组,然后将其返回

let result1 = {id: 1};          // object result
let result2 = [{id:1}, {id: 2}] // array result

function checkData (result) {
  if (Array.isArray(result)) {
    return result
  } else {
    return [result]
  }
}

console.log(checkData(result1))
console.log(checkData(result2))

我认为在您进入状态后再做并不是最好的方法。因此,在使用axios

之前,您可能想在setState调用中做类似的事情