Flatlist 没有 re-render 我的多选项目
Flatlist doesn't re-render my items in multiselect
我是 react-native 的新手,最近我正在努力处理多选问题,并在平面列表中突出显示我的项目,谁能帮帮我! :D
export default function opzioni( {navigation} ){
const renderItem = ({item}) => (
<TouchableOpacity style={item.stile} onPress={() => selectItem(item)}>
<Text>{item.titolo}</Text>
</TouchableOpacity>
)
const selectItem = (item) => {
item.isSelect = !item.isSelect;
item.stile = item.isSelect ? styles.itemSelected : styles.item;
}
return(
<SafeAreaView style={styles.containerUtente}>
<ScrollView>
<Text>SELEZIONA COSA ELIMINARE:</Text>
<FlatList
numColumns={4}
data={data}
renderItem={renderItem}
keyExtractor={item => item.id.toString()}
extraData={data}
/>
</ScrollView>
</SafeAreaView>
)
}
数据是这样的,我有一个 object 标题显示在平面列表中,一个 id 在平面列表中给出,isSelect 用于选择或取消选择项目,最后是 re-render 不同颜色背景的项目
{
titolo: "no alcol",
id: 1,
isSelect: false,
stile: styles.item
}
创建一个状态并将数据存储在其中...然后在 FlatList 中使用它...您的 select 函数也是错误的
这样写
export default function opzioni({ navigation }) {
const [Data, SetData] = React.useState(data);
const renderItem = ({ item }) => (
<TouchableOpacity
onPress={() => selectItem(item.id)}
style={item.isSelect ? styles.itemSelected : styles.item}>
<Text>{item.titolo}</Text>
</TouchableOpacity>
);
const selectItem = (id) => {
let temp = [...Data];
for (let i = 0; i < temp.length; i++) {
if (temp[i].id === id) {
temp[i].isSelect = temp[i].isSelect ? false : true;
break;
}
}
SetData(temp);
};
return (
<SafeAreaView style={styles.containerUtente}>
<ScrollView>
<Text>SELEZIONA COSA ELIMINARE:</Text>
<FlatList
numColumns={4}
data={Data}
renderItem={renderItem}
keyExtractor={(item) => item.id.toString()}
/>
</ScrollView>
</SafeAreaView>
);
}
我是 react-native 的新手,最近我正在努力处理多选问题,并在平面列表中突出显示我的项目,谁能帮帮我! :D
export default function opzioni( {navigation} ){
const renderItem = ({item}) => (
<TouchableOpacity style={item.stile} onPress={() => selectItem(item)}>
<Text>{item.titolo}</Text>
</TouchableOpacity>
)
const selectItem = (item) => {
item.isSelect = !item.isSelect;
item.stile = item.isSelect ? styles.itemSelected : styles.item;
}
return(
<SafeAreaView style={styles.containerUtente}>
<ScrollView>
<Text>SELEZIONA COSA ELIMINARE:</Text>
<FlatList
numColumns={4}
data={data}
renderItem={renderItem}
keyExtractor={item => item.id.toString()}
extraData={data}
/>
</ScrollView>
</SafeAreaView>
)
}
数据是这样的,我有一个 object 标题显示在平面列表中,一个 id 在平面列表中给出,isSelect 用于选择或取消选择项目,最后是 re-render 不同颜色背景的项目
{
titolo: "no alcol",
id: 1,
isSelect: false,
stile: styles.item
}
创建一个状态并将数据存储在其中...然后在 FlatList 中使用它...您的 select 函数也是错误的
这样写
export default function opzioni({ navigation }) {
const [Data, SetData] = React.useState(data);
const renderItem = ({ item }) => (
<TouchableOpacity
onPress={() => selectItem(item.id)}
style={item.isSelect ? styles.itemSelected : styles.item}>
<Text>{item.titolo}</Text>
</TouchableOpacity>
);
const selectItem = (id) => {
let temp = [...Data];
for (let i = 0; i < temp.length; i++) {
if (temp[i].id === id) {
temp[i].isSelect = temp[i].isSelect ? false : true;
break;
}
}
SetData(temp);
};
return (
<SafeAreaView style={styles.containerUtente}>
<ScrollView>
<Text>SELEZIONA COSA ELIMINARE:</Text>
<FlatList
numColumns={4}
data={Data}
renderItem={renderItem}
keyExtractor={(item) => item.id.toString()}
/>
</ScrollView>
</SafeAreaView>
);
}