FlatList не отображается

Я пытаюсь использовать FlatList, но FlatList не работает. -Android

Эта работа

<FlatList
  data={[{key: 'a'}, {key: 'b'}]}
  renderItem={({item}) => <Text>{item.key}</Text>}
/>

Это не работает

 <FlatList       
     data={this.state.dataSource}
     keyExtractor={this._keyExtractor}   
     renderItem={({ item}) =>{console.log(item);}}
    >

person sametpalitci    schedule 15.01.2018    source источник
comment
Что значит не работает? как будто в вашем отладчике нет журналов?   -  person K.Wu    schedule 15.01.2018
comment
Мой отладчик ничего не пишет.   -  person sametpalitci    schedule 15.01.2018
comment
Можете ли вы скопировать и вставить this.state.dataSource, а также this._keyExtractor сюда тоже? Я сделал то же самое, но мой журнал регистрирует элементы без проблем, так что я думаю, это потому, что с этими двумя что-то не так   -  person K.Wu    schedule 15.01.2018
comment
Нет проблем, когда я использую ListView, но я использую FlatList, и он не записывает данные.   -  person sametpalitci    schedule 15.01.2018
comment
Я не могу ответить на ваш вопрос, если вы не скопируете сюда свой код, я делаю то же самое, но мой отладчик отлично показывает объекты, которые я регистрирую, есть много причин, по которым это могло бы произойти, без вашего кода это почти невозможно для выявления любой проблемы. Насколько я знаю, this.state.dataSource может быть пустым массивом   -  person K.Wu    schedule 15.01.2018
comment
ты прав, мой друг. Спасибо!   -  person sametpalitci    schedule 15.01.2018


Ответы (1)


Хорошо, я нашел проблему, она внутри вашего componentWillMount:

componentWillMount() {
    return fetch('...')
        .then((response) => {
            return response.json();
        })
        .then((responseJson) => {
            let ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
            this.setState({
                isLoading: false,
                dataSource: ***ds.cloneWithRows(responseJson).rowIdentities***
            });
        });
}

Мне console.log(ds.cloneWithRows(responseJson)) понравилось то, что вы сделали изначально, но получилось вот что:

Данные, которые нам интересны, находятся в rowIdentities

person K.Wu    schedule 15.01.2018
comment
Разве rowIdentities не предназначен для ListView? Как это связано с Flatlist? - person SoundStage; 06.05.2018