在 FLATLIST 中绑定列表项 onpress (React Native)
Bind list item onpress in FLATLIST ( React Native )
使用 flatlist 在我的项目中创建项目列表。我的项目在列表中呈现良好。
select 收藏的产品有 1 个收藏图标。
根据我的数据,我正在更改底座上的图标,无论该产品是否受欢迎。
我想要的是绑定每个产品标记为收藏并更改颜色。
简而言之,需要切换最喜欢和不最喜欢的图标。
My code
Data i am rendering
entries: [
{ id: 1, is_fav: false, title: 'hello', ImagePath: 'https://cdn.pixabay.com/photo/2012/03/01/00/55/flowers-19830_960_720.jpg' },
{ id: 2, is_fav: true, title: 'world', ImagePath: 'https://cdn.pixabay.com/photo/2017/07/01/19/48/background-2462434_960_720.jpg' },
{ id: 3, is_fav: false, title: 'you', ImagePath: 'https://cdn.pixabay.com/photo/2016/12/16/15/25/christmas-1911637_960_720.jpg' },
{ id: 4, is_fav: true, title: 'you', ImagePath: 'https://cdn.pixabay.com/photo/2015/07/10/17/27/sparkler-839831_960_720.jpg' },
{ id: 5, is_fav: false, title: 'hello', ImagePath: 'https://cdn.pixabay.com/photo/2012/03/01/00/55/flowers-19830_960_720.jpg' }]
Flatlist
<FlatList
data={this.state.entries}
numColumns={this.state.columns}
key={this.state.key}
renderItem={this.Render_flatlist_Data}
keyExtractor={(item, index) => index.toString()}
ListHeaderComponent={this.Render_FlatList_Sticky_header}
stickyHeaderIndices={[0]}
/>
Render_flatlist_Data = ({ item: rowData }) => {
.....
<TouchableOpacity onPress={() => this.TickFav()}>
<Text>
<Icon name={(rowData.is_fav === true ? 'heart' : 'ios-heart-empty')}
size={25} color="#ddd" /> </Text>
</TouchableOpacity>
.....
}
单击产品收藏夹图标时如何使产品成为收藏夹。
提前致谢。
在 onPress
方法中将 rowData
作为参数传递,并在单击项目时更新 is_fav
状态。
TickFav = (rowData) => {
rowData.is_fav = !rowData.is_fav
}
对您的项目使用 onPress,当您点击您的项目时传递 id,并根据该 id 检查该项目并相应地切换其收藏。
onPress={() => {his.TickFav(id) }
首先我们需要有一个变量来观察 [extraData] 状态数据已经改变。 (即)某些产品已被标记或 un-marked 为收藏。
这有助于 flatlist 通知值已更改,因此我们必须 re-render。
对于您的情况,在 Flatlist 中添加 extraData 字段应该没问题
<FlatList
data={this.state.entries}
extraData={this.state}
numColumns={this.state.columns}
key={this.state.key}
renderItem={this.Render_flatlist_Data}
keyExtractor={(item, index) => index.toString()}
ListHeaderComponent={this.Render_FlatList_Sticky_header}
stickyHeaderIndices={[0]}
/>
TickFav = rowData => {
rowData.is_fav = !rowData.is_fav
this.setState({});
}
您甚至可以从状态中获取实际行数据并直接更改它,这是不需要的。
TickFav = (index) => {
const {entries} = this.state;
entries[index].is_fav = !entries[index].is_fav;
this.setState({entries});
}
使用 flatlist 在我的项目中创建项目列表。我的项目在列表中呈现良好。
select 收藏的产品有 1 个收藏图标。 根据我的数据,我正在更改底座上的图标,无论该产品是否受欢迎。
我想要的是绑定每个产品标记为收藏并更改颜色。 简而言之,需要切换最喜欢和不最喜欢的图标。
My code
Data i am rendering
entries: [
{ id: 1, is_fav: false, title: 'hello', ImagePath: 'https://cdn.pixabay.com/photo/2012/03/01/00/55/flowers-19830_960_720.jpg' },
{ id: 2, is_fav: true, title: 'world', ImagePath: 'https://cdn.pixabay.com/photo/2017/07/01/19/48/background-2462434_960_720.jpg' },
{ id: 3, is_fav: false, title: 'you', ImagePath: 'https://cdn.pixabay.com/photo/2016/12/16/15/25/christmas-1911637_960_720.jpg' },
{ id: 4, is_fav: true, title: 'you', ImagePath: 'https://cdn.pixabay.com/photo/2015/07/10/17/27/sparkler-839831_960_720.jpg' },
{ id: 5, is_fav: false, title: 'hello', ImagePath: 'https://cdn.pixabay.com/photo/2012/03/01/00/55/flowers-19830_960_720.jpg' }]
Flatlist
<FlatList
data={this.state.entries}
numColumns={this.state.columns}
key={this.state.key}
renderItem={this.Render_flatlist_Data}
keyExtractor={(item, index) => index.toString()}
ListHeaderComponent={this.Render_FlatList_Sticky_header}
stickyHeaderIndices={[0]}
/>
Render_flatlist_Data = ({ item: rowData }) => {
.....
<TouchableOpacity onPress={() => this.TickFav()}>
<Text>
<Icon name={(rowData.is_fav === true ? 'heart' : 'ios-heart-empty')}
size={25} color="#ddd" /> </Text>
</TouchableOpacity>
.....
}
单击产品收藏夹图标时如何使产品成为收藏夹。
提前致谢。
在 onPress
方法中将 rowData
作为参数传递,并在单击项目时更新 is_fav
状态。
TickFav = (rowData) => {
rowData.is_fav = !rowData.is_fav
}
对您的项目使用 onPress,当您点击您的项目时传递 id,并根据该 id 检查该项目并相应地切换其收藏。
onPress={() => {his.TickFav(id) }
首先我们需要有一个变量来观察 [extraData] 状态数据已经改变。 (即)某些产品已被标记或 un-marked 为收藏。
这有助于 flatlist 通知值已更改,因此我们必须 re-render。
对于您的情况,在 Flatlist 中添加 extraData 字段应该没问题
<FlatList
data={this.state.entries}
extraData={this.state}
numColumns={this.state.columns}
key={this.state.key}
renderItem={this.Render_flatlist_Data}
keyExtractor={(item, index) => index.toString()}
ListHeaderComponent={this.Render_FlatList_Sticky_header}
stickyHeaderIndices={[0]}
/>
TickFav = rowData => {
rowData.is_fav = !rowData.is_fav
this.setState({});
}
您甚至可以从状态中获取实际行数据并直接更改它,这是不需要的。
TickFav = (index) => {
const {entries} = this.state;
entries[index].is_fav = !entries[index].is_fav;
this.setState({entries});
}