React Native FlatList не будет перерисовываться после удаления последнего элемента в массиве - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь удалить элементы в FlatList, и все элементы удаляются нормально, но только последний элемент остается в списке без перерисовки.

Я использую FlatList внутри реагировать-родной-складной / Accordionи попробуйте удалить элементы с помощью действия Redux.Кажется, что все элементы в массиве удаляются, когда я сохраняю данные о состоянии console.log после slpice, но последний элемент в массиве по-прежнему отображается в списке, даже если я заново отображаю список Accordion, щелкая его раздел.

FlatList

       <FlatList
      data={section.data}
      extraData={section.data}
      keyExtractor={(item, index) => index.toString()}
      renderItem={({ item, index }) => (
          <Chore
          toDetail={() => 
          this.props.navigation.navigate('Details', {
            itemId: index,
            categoryId: item.categoryId
          })}
            item={item.desc}
            categoryId={item.categoryId}
            assignedName= {item.assignedName}
            keyExtractor={this._keyExtractor} 
            index={index} 
            parentFlatList={this} >
          </Chore>
      )}
    />

Функция удаления (src / components / Chore.js)

_handleDelete = () => {
const { dispatch } = this.props;
const deletingCategoryId = this.props.categoryId;
const deletingIndex = this.props.index;
const action = {
type: 'DELETE_CHORE',
deletingCategoryId: deletingCategoryId,
deletingIndex: deletingIndex
}
dispatch(action);
this.setState({activeRowKey: 1})
}

this.setState ({activeRowKey: 1}) - моя попытказаставить его повторно визуализировать элемент, но не работает.

Редуктор (src / store / redurs / chores.js)

case DELETE_CHORE:
const {deletingCategoryId, deletingIndex} = action;
newState = state;
newState.choreList[deletingCategoryId].data.splice(deletingIndex, 1);
return newState;

Структура данных (src / store / redurs / chores.js)

choreList: [
  {
title: "Sunday",
data: [
  {
    desc: "Laundry",
    assignedName: "A",
    priority: "High",
    note: "Use dry sheet",
    categoryId: 0
  },
  {
    desc: "Doing the dishes",
    assignedName: "B",
    priority: "Medium",
    note: "Use pods",
    categoryId: 0
  }
 ]
},

Itследует перерисовать все элементы в списке, когда вы щелкаете каждый раздел списка аккордеонов.

GitHub репо моего проекта

...