Я пытаюсь удалить элементы в 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 репо моего проекта