FlatList не показывает данные - PullRequest
0 голосов
/ 02 февраля 2019

Мой вопрос может показаться дублированным, но это не так.Я пытаюсь получить таблицу из локального sqlite и показать его через плоский список.но он показывает undefined!

Вот скриншот вывода на симуляторе: https://imgur.com/a/Ds6xMF8

Вот мой код:

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View,
  ToastAndroid,
  ListView,
  ActivityIndicator,
  FlatList,
  } from 'react-native';


var SQLite = require('react-native-sqlite-storage')
var db = SQLite.openDatabase({name: 'test.db', createFromLocation: '~sqliteexample.db'})

export default class App extends Component {
  constructor(props) {
    super(props)

    this.state = {
      petname: "",
      owner: "",
      record: []
    };


  db.transaction((tx) => {
    tx.executeSql('SELECT * FROM pet', [], (tx, results) => {
      var len = results.rows.length;
      for (let i = 0; i < len; i++) {
        let row = results.rows.item(i);
        record = this.state.record.slice()
        record.push(row.petname)
        this.setState({ record: record })
}
    });
});

  }

  render() {
    return (
      <View style={styles.container}>
        <Text>SQLite Example</Text>     
        <FlatList 
              data={this.state.record} 
              keyExtractor={((item, index) => "itemNo-" + index)}                            renderItem={({item}) => (
              <View>
                  <View>
                    <Text>{'this owner:  ' + item.owner}</Text>
                  </View>
                  <View>
                    <Text>{'this petmname:    '+ item.petname}</Text>
                </View>
              </View> 
        )
    }
/>
          </View>
    );
  }
}

Пожалуйста, скажите мне, что я делаюнеправильно?Спасибо.

1 Ответ

0 голосов
/ 02 февраля 2019

Я думаю, что проблема в следующей строке:

record.push(row.petname)

Вы нажимаете строку row.petname, а затем вы пытаетесь получить ее свойства - что неверно,поскольку у них их нет.

Попробуйте заменить вышеупомянутую строку следующей:

record.push(row)

Кроме того, какова цель .slice()здесь: record = this.state.record.slice()?

...