react-native - 更改 react-native 中所选文本的颜色
问题描述
选中后如何更改文本颜色?我已经尝试过一个状态,但它正在改变所有的文本。这是我拥有的代码:
constructor(props) {
super(props)
this.state = {
textStyle: {
color:""
},
selectedText:"",
selectedIndex:0,
tabList:[
{id:0,label:'Bélier', active:require('../Images/couleurs/icons8-belier-100.png'), inactive:require('../Images/gris/beliergris.png')},
{id:1,label:'Taureau', active:require('../Images/couleurs/icons8-taureau-96.png'), inactive:require('../Images/gris/taureaugris.png')},
{id:2,label:'Gémeaux', active:require('../Images/couleurs/icons8-gemeaux-96.png'), inactive:require('../Images/gris/gemeauxgris.png')},
{id:3,label:'Cancer', active:require('../Images/couleurs/icons8-cancer-96.png'), inactive:require('../Images/gris/cancergris.png')},
{id:4,label:' Lion', active:require('../Images/couleurs/icons8-lion-96.png'), inactive:require('../Images/gris/liongris.png')},
{id:5,label:'Vierge', active:require('../Images/couleurs/icons8-vierge-96.png'), inactive:require('../Images/gris/viergegris.png')},
{id:6,label:'Balance', active:require('../Images/couleurs/icons8-balance-96.png'), inactive:require('../Images/gris/balancegris.png')},
{id:7,label:'Scorpion', active:require('../Images/couleurs/icons8-scorpion-96.png'), inactive:require('../Images/gris/scorpiongris.png')},
{id:8,label:'Sagittaire', active:require('../Images/couleurs/icons8-sagittaire-96.png'), inactive:require('../Images/gris/sagittairegris.png')},
{id:9,label:'Verseau', active:require('../Images/couleurs/icons8-verseau-96.png'), inactive:require('../Images/gris/verseaugris.png')},
{id:10,label:'Capricorne', active:require('../Images/couleurs/icons8-capricorne-96.png'), inactive:require('../Images/gris/capricornegris.png')},
{id:11,label:'Poissons', active:require('../Images/couleurs/icons8-poissons-96.png'), inactive:require('../Images/gris/poissonsgris.png')}
],
}
changeColor(){
if(this.state.textStyle){
this.setState({color:"#81EA82"})
} else {
this.setState({color:"#ABABAB"})
}
}
<View style={styles.main_container}>
<View style = {{height: 'auto', display: 'flex', flexDirection: 'row', flexWrap: 'wrap', justifyContent: 'space-between'}}>
{
this.state.tabList.map((item,index)=>{
return(
<TouchableOpacity style = {{display: 'flex', width: '16.6%', marginBottom: 10, marginTop: 10, flexDirection: 'column', justifyContent:'center', alignItems:'center'}}
key = {item.id} onPressIn={()=>{this.setState({selectedIndex:index, selectedText:item.label})}}
onPress={() => this._fetchPlaylist()}>
<Image
style = {styles.image}
source={this.state.selectedIndex==index ? item.active:item.inactive}/>
<Text onPres = {this.textStylen } style = {{ textAlign:"center", fontSize: 10, color: this.state.selectedIndex == item.label? "#81EA82" : "#ABABAB"}}>
{item.label}
</Text>
</TouchableOpacity>
)
})
}
</View>
所以我想在item.label
点击它的时候改变它。与item.label
图像链接。我想我已经接近状态的响应,但我不知道如何在这里使用它。有人有想法吗?
谢谢
解决方案
我想问题出在你的<Text>
风格 if 声明中,应该是this.state.selectedIndex == index
。
我已经根据您的代码修改了解决方案:
this.state.tabList.map((item,index)=> {
return(
<TouchableOpacity style = {{display: 'flex', width: '16.6%', marginBottom: 10, marginTop: 10, flexDirection: 'column', justifyContent:'center', alignItems:'center'}}
key = {item.id} onPressIn={()=>{this.setState({selectedIndex:index, selectedText:item.label})}}
onPress={() => this._fetchPlaylist()}>
<Image
style = {styles.image}
source={this.state.selectedIndex==index ? item.active:item.inactive}/>
<Text style = {{ textAlign:"center", fontSize: 10, color: this.state.selectedIndex == index? "#81EA82" : "#ABABAB"}}>
{item.label}
</Text>
</TouchableOpacity>
)
}
推荐阅读
- java - 如何在 JBoss 7.1 中使用模块类加载器读取文件
- mean-stack - 前端不与后端通信
- microsoft-graph-api - 在 ms graph api 错误中搜索用户查询
- mysql - 如何根据我的 Sql 中的日期获取行的范围?
- node.js - 使用 ExpressJS 处理错误
- xamarin - 在样式中设置浮点值是否需要一些特殊代码?
- python - 根据输入形状的计算是否存在差异?(带有 Tensorflow 的 Python 中的 CNN)
- c# - 出现错误 tasks 参数包含一个空值。参数名称:Task 并行库中的tasks with parallel.foreach
- elasticsearch - 为什么某些字段不能通过 bool 查询进行拟合?
- elasticsearch - 如何在字段过多的 Elasticsearch 中提高索引性能?