【发布时间】:2021-08-24 03:57:54
【问题描述】:
我在 renderItem() 中过滤一个 FlatList。我正在检查一个属性,如果它存在,我会渲染该项目。我想实现一个计数器,这样我就知道我正在渲染多少项目,但是如果我尝试从 renderItem 设置状态,这会导致无限循环并且应用程序崩溃。我怎样才能最好地实施计数器?我是否需要在数据到达渲染之前过滤数据并从过滤器函数中增加计数器?
const renderItem = ({item}) => {
let categoryIds = map(item.locations[0].categories, 'categoryId');
if (selectedCatId === -1 || categoryIds.includes(selectedCatId)) {
// setCounter(counter+1) // can't do this
return (
<StoreListItem
tenant={item}
navigation={navigation}
showLocation={showLocation}
/>
);
}
};
【问题讨论】:
-
你需要在 UI 的某个地方显示计数器吗?
-
为什么你需要一个计数器的状态变量?只需使用普通的实例变量(
let countedItems = ...或this.countedItems = ...)?它仍然只是 JS,不要将状态用于非状态的东西(例如,不需要更新 UI 的东西)。 -
@NisanthReddy 是的。
-
@Mike'Pomax'Kamermans 这是一个功能组件。
标签: reactjs react-native