Реагировать на собственные дублирующие данные FlatList в renderItem - PullRequest
0 голосов
/ 12 сентября 2018

Я использую Firebase и redux для обновления массива и отображения его в плоском списке. Вызов выборки выполняется в componentWillMount(), и я вижу, что данные выбираются правильно. Однако, глядя на метод _myTestRender, он вызывается дважды для каждого элемента в this.props.test.

Пример данных:

[{'name':'test1', stuff: [{'key':'Bob'},{'key':'Alice'}]}]

Рендер:

console.log('RENDER');
return (
  <View style={{flex: 1}}>
    <View style={styles.container}>
      <FlatList
        keyExtractor={this._keyExtractor}
        data={this.props.test}
        renderItem={({item}) => this._myTestRender(item)} />
      <Button title="log props" onPress={this._logProps} />
    </View>
  </View>
 )
}

_keyExtractor

_keyExtractor = (item, index) => item.name;

_myTestRender

console.log('this')
console.log(item.stuff);
return (
  <Text>{item.name}</Text>
)

Это прекрасно работает, за исключением того факта, что он вызывает _myTestRender дважды для каждого элемента. В моем примере настройки я ожидал, что он будет вызывать _myTestRender дважды, а не 4 раза. Несмотря на это, я все еще вижу только два элемента на моем экране.

Примеры журналов консоли:

RENDER
Test.js:115 this
Test.js:116 (2) [{…}, {…}]
Test.js:115 this
Test.js:116 (2) [{…}, {…}]
Test.js:115 this
Test.js:116 (2) [{…}, {…}]
Test.js:115 this
Test.js:116 (2) [{…}, {…}]

Любой совет очень ценится.

...