首页 > 解决方案 > 在 React Native 的 const 中插入 if/else 语句的正确方法?

问题描述

我不断收到语法错误,我不确定如何以其他方式执行此操作:

    const new_datas = [
      if(this.state.username != '') {
      {
        name: "Plaza",
        route: "TabNav",
        icon: require("../img/plaza_party.png"),
        bg: "#C5F442"
      },
      {
        name: `${this.state.thefirstname}'s Profile`,
        route: "ProfileScreen",
        icon: require("../img/pass.png"),
        bg: "#C5F442"
      },
    }
    else{
      {
        name: "Plaza",
        route: "TabNav",
        icon: require("../img/plaza_party.png"),
        bg: "#C5F442"
      },
      {
        name: "Login/Sign Up",
        route: "LoginScreen",
        icon: require("../img/pass.png"),
        bg: "#477EEA",
      },
    }
  ];

基本上应该发生的是,一旦用户名存储在状态,它应该更新内容然后从切换Login/Signupthis.state.firstname Profile. 有没有正确的方法来实现这一点?

编辑:额外代码:

<List
        dataArray={new_datas}
        renderRow={data =>
          <ListItem
            button
            noBorder
            onPress={() => this.props.navigation.navigate(data.route)}
          >
            <Left>
              <Image
                active
                source={data.icon}
                style={{ height: 50, width: 50 }}
              />
              <Text style={styles.text}>
                {data.name}
              </Text>
            </Left>

            {data.types &&
              <Right style={{ flex: 1 }}>
                <Badge
                  style={{
                    borderRadius: 3,
                    height: 25,
                    width: 72,
                    backgroundColor: data.bg
                  }}
                >
                  <Text
                    style={styles.badgeText}
                  >{`${data.types} Types`}</Text>
                </Badge>
              </Right>}
          </ListItem>}
      />

一旦我登录,这部分就不会改变。

标签: reactjsreact-nativevariablesif-statementsyntax

解决方案


我认为三元运算符是您所追求的:

const new_datas = props.username ? [
  {
    name: "Plaza",
    route: "TabNav",
    icon: require("../img/plaza_party.png"),
    bg: "#C5F442"
  },
  {
    name: `${this.state.thefirstname}'s Profile`,
    route: "ProfileScreen",
    icon: require("../img/pass.png"),
    bg: "#C5F442"
  } 
]:[
  {
    name: "Plaza",
    route: "TabNav",
    icon: require("../img/plaza_party.png"),
    bg: "#C5F442"
  },
  {
    name: "Login/Sign Up",
    route: "LoginScreen",
    icon: require("../img/pass.png"),
    bg: "#477EEA",
  },
];

推荐阅读