Удалить элемент Flatlist, не отображающий компонент - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть FlatList для отображения галереи изображений, и у меня есть кнопка удаления, чтобы удалить элемент из FlatList. Я использовал методы сращивания и фильтрации для удаления выбранного элемента из состояния и обновления состояния после удаления из состояния.Но ни один из методов не работает.снова FlatList рендеринг одинаковых изображений.

constructor(props, context) {
    super(props, context);
  this.state = {
    allmedia : [
    {
     photo:'4072710001_f36316ddc7_b.jpg',
      caption: 'Grotto of the Madonna',
      id : 1,
      },
      {
        photo: /media/broadchurch_thumbnail.png,
        caption: 'Broadchurch Scene',
        id : 2,
      },
      {
        photo:
          '4052876281_6e068ac860_b.jpg',
          caption: 'Beautiful Eyes',
          id : 3,
      },
  ],
  }
}

удалить код:

    let initialIndex = Math.max(0, currentIndex - 1);
            let images = this.state.alldata;
            let deletedImages = this.state.deletedData;
            if (images.length > 0) {
            /*  
           //slice method
           let deletedImage = images.splice(currentIndex, 1); // 删掉选中的照片
              deletedImages.push(deletedImage[0]); // push deletedImage

              // update state
              this.setState({
                alldata: images,
                deletedData: deletedImages,
              })*/
              //filter methid
              const filteredData = this.state.alldata.filter(item => item.id !== currentIndex);
              this.setState({ alldata: filteredData });
}

, где currentIndex - текущее выбранное изображение

Примечание: МойПлоский список обернут другим компонентом, поэтому мой рендер выглядит следующим образом

render() {
      const { alldata } = this.state;
        return (
            <View style={styles.container}>
                <View style={{flex: 1}}>
                <PhotoBrowser
                    mediaList={alldata}
                    enableGrid={true}
                    displayNavArrows={true}
                    displaySelectionButtons={true}
                    displayActionButton={true}
                    onActionButton={this.onActionButton}
                    displayTopBar = {true}
                    onSelectionChanged={this.handleSelection}
                    onTopRight={this._onTopRight}
                    topRightView={this._renderTopRightView()}
                    topRightStyle={{overflow: 'hidden'}}
                    startOnGrid={true}
                    initialIndex={0}
                />
                </View>
            </View>
        )
    }

При каждом удалении изображения alldata обновляется с помощью setState, но изображения удаляются случайным образом, а не выбранный в данный момент элемент.Все говорят, что это о неизменяемости, но я не уверен, как это исправить, так как я новичок, чтобы реагировать на родной

...