我正在构建一个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;
}