React Native Update a Flatlist Item

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React Native Update a Flatlist Item相关的知识,希望对你有一定的参考价值。

我想在单击特定的Flatlist行时对其进行更新,该怎么做?我找到的解决方案全部使用extraData={this.state},在我的代码中不起作用。

const [records,setRecords] = useState([]);
//add initial data to records
...
return (
<FlatList
    data={records}
    keyExtractor={item => item.id}
    renderItem={itemData =>
        <RecordItem
            onSelect={() => {
                props.navigation.navigate({...})
                }
            } 
            onApply={()=>{
                // in my RecordItem these is a button to call onApply(), 
                and I want to update the Flatlist when I click this button

                var res = applyHandler();
                return res;
            }}
        >
        </RecordItem>
     }
/>)
答案

要更新清单列表项目,您只需更新其呈现的数据,为此,在onApply函数中,您知道项目索引,可以使用该索引来更新记录索引,例如:

const [records,setRecords] = useState([]);
//add initial data to records
...
return (
<FlatList
    data={records}
    keyExtractor={item => item.id}
    renderItem={itemData =>
        <RecordItem
            onSelect={() => {
                props.navigation.navigate({...})
                }
            } 
            onApply={()=>{
                // here you will get reference to record item index, 
                const itemIndex = itemData.index;
                const modRecords = [...records];
                modRecords[itemIndex].title = 'NEW TITLE';
                // assuming title is what you want to change
                // now just update the records using setRecords
                setRecords(modRecords);
            }}
        >
        </RecordItem>
     }
/>)

以上是关于React Native Update a Flatlist Item的主要内容,如果未能解决你的问题,请参考以下文章

运行 react-native 应用程序时出错,请帮助我

使用 textInput React Native 更新数组对象中处于状态的元素

在 React Native 0.62 更新后找不到 -lBranch 的库

彻底理解vue的patch流程和diff算法

react-native字体react-native-vector-icons在ios下的使用

react-native基础教程