反应本机ListView不显示数据

反应本机ListView不显示数据,listview,dictionary,react-native,Listview,Dictionary,React Native,我有一系列的词汇叫做partners。每个字典都有一个标题键和其他键。我希望用每个词典的标题填充ListView 在我的ListView构造函数中,我有以下行 this.ds= new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}) this.state = { dataSource: this.ds.cloneWithRows(this._partners()), } 然后我的_partners函数如下

我有一系列的词汇叫做partners。每个字典都有一个标题键和其他键。我希望用每个词典的标题填充ListView

在我的ListView构造函数中,我有以下行

    this.ds= new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})
this.state = {
  dataSource: this.ds.cloneWithRows(this._partners()),
}
然后我的_partners函数如下所示

    _partners(){
  var dataBlob = []
  for (var ii = 0; ii < partners.length; ii++) {
    dataBlob.push(partners[ii].title);
  }
  return dataBlob;
}
\u合作伙伴(){
var-dataBlob=[]
对于(var ii=0;ii
ListView中没有显示任何内容

但是如果我将_partners代码更改为

    _partners(){
  var dataBlob = []
  for (var ii = 0; ii < partners.length; ii++) {
    dataBlob.push(partners[ii]);
  }
  return dataBlob;
}
\u合作伙伴(){
var-dataBlob=[]
对于(var ii=0;ii

然后ListView工作并由整个字典填充

我认为问题可能在于您对ds.cloneWithRows赋值的定义。我将它从构造函数中移出,使其成为React类定义之上的一个变量,并且工作正常。下面是一个示例项目,代码如下

“严格使用”;
var React=require('React-native');
变量{
评估学,
样式表,
文本,
看法
ListView,
可触摸高光
}=反应;
var ds=新的ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2})
var partners=[{title:'总裁',name:'克里斯'},{title:'经理',name:'梅丽莎'},{title:'首席执行官',name:'阿曼达'}]
类SampleApp扩展了React.Component{
建造师(道具){
超级(道具)
此.state={
数据源:ds.cloneWithRows(this.\u partners()),
}
}
_合伙人(){
var-dataBlob=[]
对于(var ii=0;iiSampleApp);

不幸的是,我的xcode似乎不工作,它一直给我相同的错误(即使在新项目上)无法连接到开发服务器,请检查节点是否正在运行。所以我无法核实你的答案。
'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  ListView,
  TouchableHighlight
} = React;

var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})
var partners = [{title: 'President', name: 'chris'}, {title: 'Manager', name: 'Melissa'}, {title: 'CEO', name: 'Amanda'}]

class SampleApp extends React.Component {

  constructor(props){
    super(props)
    this.state = {
        dataSource: ds.cloneWithRows(this._partners()),
    }
  }

  _partners(){
    var dataBlob = []
    for (var ii = 0; ii < partners.length; ii++) {
      dataBlob.push(partners[ii].title);
    }
    return dataBlob;
  }

  _renderRow(rowData) {
    return <TouchableHighlight underlayColor="ededed" style={{ height:60, backgroundColor: '#efefef', borderBottomWidth:1, borderBottomColor: '#ddd', flexDirection:'row', justifyContent: 'center', alignItems: 'center' }}>
        <Text style={{ fontSize:18 }}>{rowData}</Text>
      </TouchableHighlight>
  }

  render() {
    console.log('Partners: ', this._partners() )
    return (
      <View style={styles.container}>
        <ListView
         dataSource={this.state.dataSource}
         renderRow={ this._renderRow } />
      </View>
    );
  }
}

var styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop:60
  },

});

AppRegistry.registerComponent('SampleApp', () => SampleApp);