我已经运行了反应本机应用程序我已经使用了2个页面两个页面都使用了listView组件,但是1个页面正确运行,并且在另一个页面中使用了相同的功能,但它返回了以下错误enter image description here
StaticRenderer.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.
第1页代码
AsyncStorage.getAllKeys().then((value) => {
var arr = [];
for(var i=0;i<value.length;i++){
if(value[i] != "userName"){
arr.unshift(value[i]);
}
}
this.setState({
ds: arr
})
this.setState({
dataSource:this.state.dataSource.cloneWithRows(this.state.ds),
})
}).done();
第2页代码
AsyncStorage.getItem("userName").then((value) => {
var data = JSON.parse(value);
var arr = [];
if(data != null){
for(var i=0;i<data.length;i++){
arr.unshift(data[i]);
}
}
this.setState({
ds: arr
})
this.setState({
dataSource:this.state.dataSource.cloneWithRows(this.state.ds),
})
}).done();
Page 2 listView
<ListView
dataSource = {this.state.dataSource}
renderRow = {this.renderRow.bind(this)}
enableEmptySections = {true}>
</ListView>
答案 0 :(得分:1)
第2页上的data
出了点问题。
是阵列吗?如果是这样,你是否只是循环它并执行unshift
使其反转?如果是这种情况,您可以使用reverse()
。
我的猜测是,JSON.parse(value)
返回对象。只需console.log
arr
变量,看看它是否是dataSource所期望的。