无法在 React Native 中设置活动和非活动图像

Anilkumar iOS - ReactNative

我在我的应用程序中显示自定义标签栏,它显示在屏幕中央。因此,每次一个选项卡应该处于活动状态而其他选项卡将处于非活动状态。据此,我已经实现了逻辑(布尔值)并尝试更改图像,但是,它不起作用。

我的要求是

我有 4 个标签,假设如果用户点击第一个标签,我必须将活动图像设置为第一个标签,然后根据这些标题(不同的非活动)图像将剩余的 3 个标签设置为非活动图像。

就像所有选项卡处于活动状态和非活动状态一样,每次只有一个选项卡处于活动状态。

它显示 undefined 和 if 和 else if 条件正在执行,但是,没有任何改变图像。

这是我的代码

    constructor(props) {
        super(props);
     //   this.state = { dataArray: getListData()}
        this.state = { selectedTab: 'Value', flagImage:true, flagForTelugu: false, flagForTamil: false, flagForHindi: false, flagForEnglish: false}
     }

    OnTabItemHandler = (tabItem) => {
        this.setState({selectedTab: tabItem,flagImage:this.state.flagImage})
    }

    renderBottomContent = (item) => {
        const {selectedTab, dataArray, flagForTelugu, flagForTamil, flagForHindi, flagForEnglish} = this.state 
        this.state = { dataArray: getListData()}    
        if (selectedTab ===  ‘Telugu’) {
            this.flagForTelugu = true
            this.flagForTamil = false
            this.flagForHindi = false
            this.flagForEnglish = false
        } else if (selectedTab ===  ‘Tamil’) {
            this.flagForTamil = true
            this.flagForTelugu = false
            this.flagForHindi = false
            this.flagForEnglish = false
        } else if (selectedTab ===  ‘Hindi’) {
            this.flagForHindi = true
            this.flagForTamil = false
            this.flagForTelugu = false
            this.flagForEnglish = false
        } else if (selectedTab ===  ‘English’) {
            this.flagForEnglish = true
            this.flagForTamil = false
            this.flagForTelugu = false
            this.flagForHindi = false
        } 

     //loading some other text here in bottom
}

    render(item) {
        const {selectedTab, flagForTelugu, flagForTamil, flagForHindi, flagForEnglish} = this.state;
return (
            <View style={styles.container}>

           <View style = {styles.tabContainer}>
           <TouchableOpacity style={styles.tabIcons} onPress={() => this.OnTabItemHandler(‘Telugu’)}>
                            <Image
                                style={styles.tabItemsImages}
                                source={this.state.flagImage === true ?                  
                                    teluguActiveImage : 
                                    teluguDeActiveImage}
                            />
                        </TouchableOpacity>
                        <Text style={styles.tabTextItems} onPress={() => this.OnTabItemHandler('Telugu')}>Telugu</Text>
                    </View>

           <View style = {styles.tabContainer}>
           <TouchableOpacity style={styles.tabIcons} onPress={() => this.OnTabItemHandler(‘Tamil’)}>
                            <Image
                                style={styles.tabItemsImages}
                                source={this.state.flagImage === true ?                  
                                    tamilActiveImage : 
                                    tamilDeActiveImage}
                            />
                        </TouchableOpacity>
                        <Text style={styles.tabTextItems} onPress={() => this.OnTabItemHandler('Tamil')}> Tamil </Text>
                    </View>

           <View style = {styles.tabContainer}>
           <TouchableOpacity style={styles.tabIcons} onPress={() => this.OnTabItemHandler(‘Hindi’)}>
                            <Image
                                style={styles.tabItemsImages}
                                source={this.state.flagImage === true ?                  
                                    hindiActiveImage : 
                                    hindiDeActiveImage}
                            />
                        </TouchableOpacity>
                        <Text style={styles.tabTextItems} onPress={() => this.OnTabItemHandler('Hindi')}> Hindi </Text>
                    </View>

           <View style = {styles.tabContainer}>
           <TouchableOpacity style={styles.tabIcons} onPress={() => this.OnTabItemHandler(‘English’)}>
                            <Image
                                style={styles.tabItemsImages}
                                source={this.state.flagImage === true ?                  
                                    englishActiveImage : 
                                    englishDeActiveImage}
                            />
                        </TouchableOpacity>
                        <Text style={styles.tabTextItems} onPress={() => this.OnTabItemHandler('English')}> English </Text>
                    </View>
 </View>
              {this.renderBottomContent(item)}
          </View>
      );
   }

谁能建议我,我哪里做错了?

而在renderBottomContent()方法中,这些flagForTelugu、flagForTamil、flagForHindi、flagForEnglish在调试时显示为undefined。

在此处输入图片说明

飞利浦

我不擅长解释代码的工作原理。

但这个想法是你需要 1state调用selectedIndex,剩下的就是你需要检查活动图像与selectedIndexis match 显示active图像

示例代码可能如下所示:

import React, { Component } from 'react';
import RN from 'react-native';

export default class App extends Component {

  constructor(props) {
    super(props);
    this.state={
      selectedIndex:0,
      //you can change every urlActive and urlInactive url to your needed image
      tabList:[
        {label:'tab 1', urlActive:'https://livelovely.com/static/images/full-listing/icon-modal-success%402x.png', urlInactive:'https://icon2.kisspng.com/20180823/ioc/kisspng-traffic-sign-image-traffic-code-no-symbol-inactive-symbol-www-pixshark-com-images-gallerie-5b7e884790b8a3.5710860815350190795928.jpg'},
        {label:'tab 2', urlActive:'https://livelovely.com/static/images/full-listing/icon-modal-success%402x.png', urlInactive:'https://icon2.kisspng.com/20180823/ioc/kisspng-traffic-sign-image-traffic-code-no-symbol-inactive-symbol-www-pixshark-com-images-gallerie-5b7e884790b8a3.5710860815350190795928.jpg'},
        {label:'tab 3', urlActive:'https://livelovely.com/static/images/full-listing/icon-modal-success%402x.png', urlInactive:'https://icon2.kisspng.com/20180823/ioc/kisspng-traffic-sign-image-traffic-code-no-symbol-inactive-symbol-www-pixshark-com-images-gallerie-5b7e884790b8a3.5710860815350190795928.jpg'},
      ]
    }
  }

  render() {
    console.disableYellowBox = true;
    return (
      <RN.View style={{flex:1}}>
        //creating the tab height
        <RN.View style={{flex:0.07, flexDirection:'row'}}>
          {
            //loop throught the state
            this.state.tabList.map((item,index)=>{
              return(
                //the style just to make it beautiful and easy to debug
                <RN.TouchableOpacity style={{flex:1, alignItems:'center', backgroundColor:index==0?'green':index==1?'blue':'yellow'}}
                  //this onpress to handle of active selected tab
                  onPress={()=>{this.setState({selectedIndex:index})}}
                >
                  <RN.View>
                    <RN.Text>{item.label}</RN.Text>
                    <RN.Image
                      //here's the magic show off
                      source={{uri:this.state.selectedIndex==index?item.urlActive:item.urlInactive}}
                      style={{width:20, height:20, resizeMode:'contain'}}
                    />
                  </RN.View>
                </RN.TouchableOpacity>
              )
            })
          }
        </RN.View>
      </RN.View>
    );
  }
}

结果如下:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在React Native中显示图像

来自分类Dev

[React Native]图像无法在Android中加载

来自分类Dev

React Native + TypeScript,无法设置状态

来自分类Dev

无法在React Native render()中运行.map()

来自分类Dev

无法在iOS中打开React Native DateTimePicker

来自分类Dev

无法删除React Native FlatList中的项目

来自分类Dev

无法在Firestore中获取文档(React Native)

来自分类Dev

ScrollView无法在React Native中滚动

来自分类Dev

React Native 无法在 TextInput 中聚焦

来自分类Dev

在 React Native 中无法识别 Lodash _.reduce

来自分类Dev

无法在 React Native 中链接库

来自分类Dev

无法在 react-native 中返回元素

来自分类Dev

在React Native iOS Simulator中无法通过URI显示图像

来自分类Dev

无法在React Native中动态设置标题标题

来自分类Dev

无法使用道具在 React Native 中设置样式

来自分类Dev

无法使用带有uri的React Native显示图像

来自分类Dev

图像路径 react-native:无法解析模块

来自分类Dev

React Native - FlatList 加载图像时的活动指示器

来自分类Dev

React-Native:无法从表单值设置状态

来自分类Dev

React Native无法在循环中从Firebase设置多个arrayitems

来自分类Dev

React-Native:无法从表单值设置状态

来自分类Dev

无法启动Android的React Native

来自分类Dev

React Native Keep无法运行

来自分类Dev

React Native无法解析模块

来自分类Dev

无法从React Native引用Navigator

来自分类Dev

无法运行 jetifier React Native

来自分类Dev

React Native:无法导入和使用外部软件包

来自分类Dev

无法使用Multer,React Native和Axios上传文件

来自分类Dev

React Native:无法导入和使用外部软件包

Related 相关文章

热门标签

归档