react-native - react native recyclerlistview 只渲染一项
问题描述
我使用 recyclerlistview 并希望在单击时更改图标。但是 Recyclerlistview 不会重新渲染,除非我使用 extendState。但是随后所有行都发生了变化并且速度很慢。也许我的新图标不是直接在 0.500-800 毫秒内显示的。为什么 ?
一个小片段只是一个例子。
const List = () => {
const [changeIcon, setChangeIcon] = useState(false);
const [updateRecycler, setUpdateRecycler] = useState({update: false})
const updateRecycler = () => {
setChangeIcon(prevState => !prevState);
setUpdateRecycler(prevState => !prevState);
};
const rowRenderer = (type, data) => {
const { name } = data.item;
return (
<View>
<TouchableOpacity onPress={() => ChangeIcon()}>
{ changeIcon ?
<Icon1 name="heart" size={32} color="black" /> : <Icon1 name="heart-o" size={32} color="black" />
}
</TouchableOpacity>
</View>
)
};
<RecyclerListView
style={{flex: 1, paddingTop: 20}}
rowRenderer={rowRenderer}
extendedState={updateRecycler}
optimizeForInsertDeleteAnimations
dataProvider={dataList}
layoutProvider={dataLayoutProvider}
/>
};
解决方案
推荐阅读
- http - 如果 http 请求失败,如何添加超时?
- javascript - Nodejs Buffer.from(..) 转换 javascript react native
- reactjs - 如何使用 React Hooks 使用 Spring WebFlux 服务
- html - 如何垂直放置元素而不是相互叠加
- mysql - 使用netbeans从mysql中检索数据
- sql - 在 SQL 中使用 NOT IN 时,使用 != 会得到不同的结果
- ios - 可以使用 HKWorkoutBuilder 对象在 iPhone(没有配对手表)中收集锻炼数据吗?
- php - 数组数组上的array_diff() 返回错误结果
- java - EAP 7.2 上的目标“不存在”错误
- javascript - 多次模态渲染