使用babel进行合并时出现ESLint错误:
第28行:希望进行赋值或函数调用,而是看到一个表达式no-unused-expressions
第29行:希望进行赋值或函数调用,而是看到了一个表达式no-unused-expressions
有什么想法可以在使计时器仍然按预期工作的同时摆脱这些障碍吗?还是您有更好的方法让我做计时器?
class RequestTimer extends Component {
constructor(props) {
super(props);
this.state = {
seconds: 0,
minutes: 0,
hours: 0
}
this.getTime = this.getTime.bind(this);
}
getTime() {
let second = this.state.seconds
let minute = this.state.minutes;
let hour = this.state.hours;
this.state.seconds % 59 === 0 && this.state.seconds !== 0 ? minute += 1:null;
this.state.minutes % 59 === 0 && this.state.seconds % 59 === 0 && this.state.minutes !== 0 ? (hour += 1, minute = 0):null;
this.setState({
seconds: second +=1,
minutes: minute,
hours: hour
})
}
componentDidMount() {
this.timer = setInterval(this.getTime, 1000)
}
render() {
return (
<TimerContainer>
<h2>Last Request:</h2>
<p>{this.state.hours}h {this.state.minutes}m {this.state.seconds % 60}s</p>
</TimerContainer>
)
}
}
答案 0 :(得分:3)
您要使用正确的if
语句:
getTime() {
let second = this.state.seconds
let minute = this.state.minutes;
let hour = this.state.hours;
if (this.state.seconds % 59 === 0 && this.state.seconds !== 0) {
minute += 1;
}
if (this.state.minutes % 59 === 0 && this.state.seconds % 59 === 0 && this.state.minutes !== 0) {
hour += 1;
minute = 0;
}
this.setState({
seconds: second +=1,
minutes: minute,
hours: hour
});
}
如果您不想对结果值做任何事情,请不要使用三元运算符。特别是当您没有else
大小写或必须使用逗号运算符来执行多项操作时,尤其不要使用它。
答案 1 :(得分:0)
有几种解决方法。
1。)只需在文件的顶部使用eslint-disable禁用整个文件的规则。
/* eslint-disable no-unused-expressions */
2。)您应该在所有行(28,29)的最后写下面的代码,以便将其禁用。
/* eslint-disable-line */
答案 2 :(得分:0)
或者修改三元运算以具有L.H.S表达式
this.state.seconds % 59 === 0 && this.state.seconds !== 0 ? minute += 1:null;
更改
minute = this.state.seconds % 59 === 0 && this.state.seconds !== 0 ? minute + 1:null;