Android 如何在React Native[ListView]中按按钮更改图标
我是个新来的土生土长的人,所以如果这很简单,请原谅我的问题。我试图在列表视图中切换图标。我该怎么做?非常感谢你的帮助 这是我正在使用的一段代码Android 如何在React Native[ListView]中按按钮更改图标,android,listview,react-native,react-native-android,react-native-listview,Android,Listview,React Native,React Native Android,React Native Listview,我是个新来的土生土长的人,所以如果这很简单,请原谅我的问题。我试图在列表视图中切换图标。我该怎么做?非常感谢你的帮助 这是我正在使用的一段代码 this.state = { logo: 'star-o', check: false }; saveFavourite = (data) => { this.state.check === false ? this.setState({logo:'star', check:true}) : this.setState({l
this.state = {
logo: 'star-o',
check: false
};
saveFavourite = (data) => {
this.state.check === false ? this.setState({logo:'star', check:true}) : this.setState({logo:'star-o', check:false})
}
<TouchableOpacity onPress={() => this.saveFavourite(data)}>
<Icon name={this.state.logo} size={30} />
</TouchableOpacity>
this.state={
徽标:“star-o”,
检查:错误
};
SaveFavorite=(数据)=>{
this.state.check==false?this.setState({logo:'star',check:true}):this.setState({logo:'star-o',check:false})
}
此.saveFavorite(数据)}>
它不会更改图标。首先,我可以通过您的代码猜测您正在持有列表视图的组件中解决此问题。这是错误的,因为你不能为每个“可爱”的组件定义一个状态,主要是因为你无法事先知道它们有多少。相反,如果道具喜欢或不喜欢此组件,则应尝试将其设置为虚拟组件并接收 然后,您应该在组件中放置一个回调函数,以执行来自父组件的代码。大概是这样的:
class MyListComponent extends React.Component {
state = {
items: [
{ text: 'Some text', loved: false },
{ text: 'Some text2', loved: true },
],
}
toggleLoved() => {
// your logic here
}
render() {
return(
<FlatList
data={this.state.items}
renderItem={(item) => {
<MyLoveableComponent
loved={item.item.loved}
onLoved={ () => this.toggleLoved() }
}/>
);
}
}
const MyLoveableComponent = ({ loved, onLoved, logo }) => {
return(
<TouchableOpacity
onPress={() => {
setFavourite();
onLoved();
}>
<Icon name={logo} size={30} />
</TouchableOpacity>);
}
}
MyListComponent类扩展了React.Component{
状态={
项目:[
{text:'Some text',loved:false},
{text:'Some text2',loved:true},
],
}
toggleLoved()=>{
//你的逻辑在这里
}
render(){
返回(
{
this.toggleLoved()}
}/>
);
}
}
const MyLoveableComponent=({loved,onLoved,logo})=>{
返回(
{
setfavorite();
onLoved();
}>
);
}
}
检查组件容器设计模式,并提醒组件应尽可能为虚拟组件。谢谢您的回答。我会尝试一下,让你知道这是一个很大的重构。如果有任何疑问,请发表评论。如果对你有用,记得接受答案;)如果我将此类数据>项[{text:'Some text',loved:false},{text:'Some text2',loved:true}]存储为本地json文件,如何更新这些数据>项?您应该尝试将这些值存储在AsyncStorage中,或者使用Redux和Redux Persist这样做。如果不是,您的数据将永远是静态的。当前,我将数据存储为以下(data.js)项:[{text:'Some text',loved:false},{text:'Some text2',loved:false},],当我按下savefavorite()时,它将存储到AsyncStorage中并更新loved:true。我这样做对吗?