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

新手上路,请多包涵

使用 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>
        )
    }
}

原文由 user5377005 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 453
2 个回答

您要使用正确的 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 大小写或者你必须使用逗号运算符来做多件事时,你不应该使用它。

原文由 Bergi 发布,翻译遵循 CC BY-SA 4.0 许可协议

有几个解决方案。

1.) 只需在 文件顶部使用 eslint-disable 禁用整个文件的规则。

 /* eslint-disable no-unused-expressions */

2.) 你应该在所有行 (28,29) 的末尾写下代码,这样它就被禁用了。

 /* eslint-disable-line */

原文由 Dhara Babariya 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题