使用Switch Case React Native时的语法错误

时间:2019-03-09 00:23:04

标签: react-native expo

import React from 'react';
import { View, Text, StyleSheet, FlatList, TouchableOpacity, Dimensions, ActivityIndicator, Image } from 'react-native';
import { Font, LinearGradient } from 'expo';

const data = [
  { key: 'C' }, { key: 'S' }, { key: 'D ' }, { key: 'E' }
];
const numColumns = 1;
export default class LanguageScreen extends React.Component {

  renderItem = ({ item, index }) => {
    return (
      <TouchableOpacity onPress={() =>{this.props.navigation.navigate(item.page)}} activeOpacity={0.95}>
        <LinearGradient
            colors={['rgb(59, 180, 203)','rgb(108, 220, 204)']}
            style={styles.contcontainer}
            start={{ x: 0, y: 1 }}
            end={{ x: 1, y: 1 }}>
            <View style={styles.titleBox}>
              <Text style={styles.title}>{item.key}</Text>
            </View>
            switch(item.key) {
              case 'C' : return (
                <View style={styles.imagecont}><Image source={require('./data/C.png')} style={styles.icon} /></View>
              );
              default: return (
                  <View style={styles.imagecont}>
                  </View>
            }
        </LinearGradient>
      </TouchableOpacity>
    );
  };

  render () {
    return (
      <FlatList
        data={data}
        style={styles.container}
        renderItem={this.renderItem}
        numColumns={numColumns}
      />
    );
  }
}

我正在传递平面清单项目密钥,以使相应图像出现在其中的每个项目。但是我在开关案例的开始位置正下方收到意外令牌的语法错误。请在这件事上给予我帮助 语法错误:

1 个答案:

答案 0 :(得分:2)

您不能像这样将任意JS语句放在返回值的中间。 为了执行您要尝试的操作,我建议您执行以下操作:

renderImage = (key) => {
  switch(key) {

    case 'C' : return (
                <View style={styles.imagecont}><Image source={require('./data/C.png')} style={styles.icon} /></View>
              );
    default: return (
                   <View style={styles.imagecont}>
                   </View>
             );
  }
}

,然后在您的render中,将switch语句替换为以下内容:

{this.renderImage(item.key)}