Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FlatList] always mount and unmount some top items even if initialScrollIndex was set #14521

Closed
irrigator opened this issue Jun 15, 2017 · 1 comment
Labels
Resolution: Locked This issue was locked by the bot.

Comments

@irrigator
Copy link

Description

Set initialScrollIndex to " immediately renders the items starting at this initial index". However, some tops items are mount and unmount after the initial items are mount and unmount.

Reproduction Steps

Run the sample code below on React Native 0.45.1. The expected behavior is:

item 101 was mount => item 98 ~ 100 and item 102 ~ 104 was mount (because windowSize is 7).

The actual behavior is:

item 101 was mount => item 101 was unmount => item 1 ~ 4 was mount => item 1 ~ 4 was unmount => item 97 ~ item 104 was mount.

Sample Code

import React from 'react';
import { View, Text, FlatList, Dimensions, Button } from 'react-native';
import _ from 'lodash';
const { width, height } = Dimensions.get('window');

class Item extends React.PureComponent {
  componentDidMount() {
    console.info('mount', this.props.item);
  }

  componentWillUnmount() {
    console.info('unmount', this.props.item);
  }

  render() {
    return (
      <View
        style={{
          width,
          height,
          justifyContent: 'center',
          alignItems: 'center',
        }}
      >
        <Text>{this.props.item}</Text>
      </View>
    );
  }
}

export default class PlayWithFlatList extends React.PureComponent {
  render() {
    const data = _.range(1, 200);
    return (
      <View style={{ flex: 1 }}>
        <FlatList
          ref={node => (this.list = node)}
          data={data}
          keyExtractor={(item, index) => item}
          renderItem={({ item }) =>
            <Item item={item} />}
          horizontal={true}
          pagingEnabled={true}
          initialScrollIndex={100}
          initialNumToRender={1}
          windowSize={7}
          getItemLayout={(data, index) => ({
            length: width,
            offset: width * index,
            index,
          })}
        />
      </View>
    );
  }
}

Additional Information

  • React Native version: 0.45.1
  • Platform: both
  • Development Operating System: macOS
  • Build tools: Xcode 8.3.3
@hramos hramos changed the title FlatList always mount and unmount some top items even if initialScrollIndex was set [FlatList] always mount and unmount some top items even if initialScrollIndex was set Jun 15, 2017
@hramos hramos added the Icebox label Aug 24, 2017
@hramos
Copy link
Contributor

hramos commented Aug 24, 2017

Hi there! This issue is being closed because it has been inactive for a while. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. Either way, we're automatically closing issues after a period of inactivity. Please do not take it personally!

If you think this issue should definitely remain open, please let us know. The following information is helpful when it comes to determining if the issue should be re-opened:

  • Does the issue still reproduce on the latest release candidate? Post a comment with the version you tested.
  • If so, is there any information missing from the bug report? Post a comment with all the information required by the issue template.
  • Is there a pull request that addresses this issue? Post a comment with the PR number so we can follow up.

If you would like to work on a patch to fix the issue, contributions are very welcome! Read through the contribution guide, and feel free to hop into #react-native if you need help planning your contribution.

@hramos hramos closed this as completed Aug 24, 2017
@facebook facebook locked as resolved and limited conversation to collaborators Aug 24, 2018
@react-native-bot react-native-bot added the Resolution: Locked This issue was locked by the bot. label Aug 24, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Resolution: Locked This issue was locked by the bot.
Projects
None yet
Development

No branches or pull requests

3 participants