ESLint-ReactJS中没有未使用的表达式

时间:2018-09-11 11:26:44

标签: javascript reactjs refactoring 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>
        )
    }
}

3 个答案:

答案 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;