嵌套的switch语句未运行正确的案例代码块

时间:2018-04-15 05:16:36

标签: javascript reactjs nested switch-statement

我正在构建一个react应用程序(rails后端)并设置了一个嵌套的switch case,它首先检查用户是否至少创建了一个条目,如果是,则进入嵌套的switch case并检查是否存在变量小于0(基本上是倒计时,将用户限制为每天一个条目)。

问题是,即使条件为真(变量小于0),它也会默认为'false'情况并避免'true'情况。关于是什么导致这个问题的任何想法?

switch (this.state.getslacks.length == 0) {

  case true:

  Slack
    .create(slackParams)
    .then(data => {
      if (data.errors) {
        this.setState({
          timeout: '',
          slacks: {},
          errors: [{
            message: 'Come back tomorrow to make another entry!'
          }],
          // validationErrors: data.errors.filter(
          //   e => e.type === "ActiveRecord::RecordInvalid"
          // )
        });
      } else {
        this.props.addSlack(data)
      }
    });

    setTimeout(() => {
      Slack
      .all()
      .then(slacks => {
        this.setState({
          getslacks: slacks,
          loading: false
        });
      });
    }, 150)

      console.log("User's first post");
      break;

  case false:

    let latest = getslacks[0]
    let currentTime = Moment(Date()).format()
    let timeout = Moment(latest.created_at).add(20, 'hours').format()
    let elapsed = (Date() - latest.created_at)
    let timeLeft = Moment(timeout).diff(currentTime, 'hours', true)
    let timeLeftNum = parseFloat(parseFloat(timeLeft).toFixed(2))

    switch (timeLeftNum < 0) {

          ##DEFAULTING TO THIS CASE##
      case false:

        let {getslacks, loading} = this.state;
        let latest = getslacks[0]
        let currentTime = Moment(Date()).format()
        let timeout = Moment(latest.created_at).add(20, 'hours').format()
        let elapsed = (Date() - latest.created_at)
        let timeLeft = Moment(timeout).diff(currentTime, 'hours', true)
        let timeLeftNum = parseFloat(parseFloat(timeLeft).toFixed(2))
        let timeLeftString = timeLeftNum.toString()

        this.setState({
          timeout: timeLeftString,
        });

        break;

       ##THIS CASE NOT RUNNING EVEN IF CONDITION IS TRUE##
      case true:
      Slack
        .create(slackParams)
        .then(data => {
          if (data.errors) {
            this.setState({
              getslacks: [],
              slacks: {},
              errors: [{
                message: 'Come back tomorrow to make another entry!'
              }],

            });
          } else {
            this.props.addSlack(data)
          }
        });
        this.setState({
          timeout: timeLeftString,
        });

        break;
    }
      break;
}

0 个答案:

没有答案