Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 当只有一个项目发生更改时,如何防止整个项目列表重新呈现?(用钩子反应)_Reactjs_React Native_React Hooks - Fatal编程技术网

Reactjs 当只有一个项目发生更改时,如何防止整个项目列表重新呈现?(用钩子反应)

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 (

我一直在使用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 (
        <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道具,可以避免每次将项目添加到列表时重新呈现整个列表

用平面列表替换地图:用平面列表替换地图:我以前试过一次,但让我再试一次。我以前试过一次,但让我再试一次。