use*_*005 0 javascript refactoring reactjs eslint
使用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>
)
}
}
Run Code Online (Sandbox Code Playgroud)
有几个解决方案。
1.) 只需在文件顶部使用 eslint-disable 禁用整个文件的规则。
/* eslint-disable no-unused-expressions */
Run Code Online (Sandbox Code Playgroud)
2.)您应该在所有行(28,29)的末尾写下以下代码,以便它被禁用。
/* eslint-disable-line */
Run Code Online (Sandbox Code Playgroud)
您要使用适当的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
});
}
Run Code Online (Sandbox Code Playgroud)
如果您不想对结果值做任何事情,请不要使用三元运算符。特别是当您没有else
大小写或必须使用逗号运算符来执行多项操作时,尤其不要使用它。
归档时间: |
|
查看次数: |
7340 次 |
最近记录: |