在我的应用程序中,我正在使用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()
}
答案 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
可以创建一个简单的函数
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
调用中做类似的事情