Reactjs 当只有一个项目发生更改时,如何防止整个项目列表重新呈现?(用钩子反应)
我一直在使用React Native(hooks edition)中的列表。我有一个函数,它返回一个类似这样的项目列表Reactjs 当只有一个项目发生更改时,如何防止整个项目列表重新呈现?(用钩子反应),reactjs,react-native,react-hooks,Reactjs,React Native,React Hooks,我一直在使用React Native(hooks edition)中的列表。我有一个函数,它返回一个类似这样的项目列表 function toDisplay (what) { let dataList = []; if (what === 'List 1') dataList = MobXStore.listOne else if (what === 'List 2') dataList = MobXStore.listTwo return (
function toDisplay (what) {
let dataList = [];
if (what === 'List 1') dataList = MobXStore.listOne
else if (what === 'List 2') dataList = MobXStore.listTwo
return (
<ScrollView>
{
dataList ? dataList.map((item,index) =>
<ListItem
key={index + item.id}
containerStyle={{
backgroundColor: index % 2 === 0 ? 'black' : '#0a0a0a',
}}
leftAvatar={{source: {uri: item.image}, size: 75}}
title={item.title}
}
</ScrollView>
)
}
函数显示(什么){
让dataList=[];
如果(what=='List 1')数据列表=MobXStore.listOne
如果(what=='List 2')dataList=MobXStore.listwo,则为else
返回(
{
dataList?dataList.map((项目、索引)=>
最好将您的Scrollview替换为Flatlist:
<FlatList
data={dataList}
renderItem={({item}) => <Text>{item.data}</Text>}
keyExtractor={item => `listkey${item.id}`}
/>
{item.data}
keyExtractor={item=>`listkey${item.id}`}
/>
使用keyExtractor道具,您可以避免每次将项目添加到列表时都重新呈现整个列表最好将您的Scrollview替换为Flatlist:
<FlatList
data={dataList}
renderItem={({item}) => <Text>{item.data}</Text>}
keyExtractor={item => `listkey${item.id}`}
/>
{item.data}
keyExtractor={item=>`listkey${item.id}`}
/>
使用keyExtractor道具,可以避免每次将项目添加到列表时重新呈现整个列表用平面列表替换地图:用平面列表替换地图:我以前试过一次,但让我再试一次。我以前试过一次,但让我再试一次。