使用db-models数据更新ListView

时间:2017-05-03 14:51:07

标签: react-native

我想使用db-models创建的数据生成我的视图:

https://www.npmjs.com/package/react-native-db-models

但是有问题:没有任何附加,我的观点保持空白。 1)db(for循环)的大小等于0(但在 DB.bills.get_all()之后它必须是8。

构造

int count = 0;
printf("how many do you want to enter: ");
scanf("%d", &count);
int val = 0;
int sum = 0;
int i = 0;
while(scanf("%d ", &val) == 1 && i++ < count)
  sum += val;

ComponentDidMount()

constructor(props) {
  super(props);
  var bdd = [];
  const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
  this.state = {
  dataSource: ds.cloneWithRows(bdd)
 };
}

我的DB.bills.get_all()中有 console.log(db)

componentDidMount() {
console.log("START");

let self = this;
var db = [];

DB.bills.get_all(function(result) {
  db = result;
  console.log(db);
});

  let newArray = self.state.dataSource._dataBlob.s1.slice();
  for(var i = 0; i<Object.keys(db).length ; i++){
    newArray[i] = {
      ...self.state.dataSource[i],
      field: JSON.stringify(db),
    };
    console.log("i : " + i + " db : " + db);
  }

  self.setState({dataSource: self.state.dataSource.cloneWithRows(newArray),
  });
        console.log("DS : ", this.state.dataSource);
  console.log("END");
}

我已经开始工作2天了。请帮帮我^^“

1 个答案:

答案 0 :(得分:1)

那是因为你的DB.bills.get_all函数是异步的。当您获得result时,您已经计算了newArray并设置了您的州。在计算result并克隆数据源之前,您需要等待newArray。尝试将DB.bills.get_all之后的代码放在回调函数中。