ESLint - нет неиспользованных выражений в ReactJS - PullRequest
0 голосов
/ 11 сентября 2018

Получение ошибки ESLint при копировании с babel:

  • Строка 28: ожидался вызов присваивания или функции, и вместо этого он увидел выражение no-unused-expression *

  • Строка 29: ожидал присваивания или вызова функции и вместо этого видел выражение no-unused-выражений

Любая идея, как избавиться от них, пока мой таймер все еще работаеткак предполагалось?Или у тебя есть лучший способ, чтобы я использовал таймер?

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 голосов
/ 11 сентября 2018

Вы хотите использовать правильное выражение 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 или когда вам нужно использовать запятую, чтобы сделать несколько вещей.

0 голосов
/ 29 апреля 2019

В качестве альтернативы измените троичную операцию, чтобы получить выражение LHS

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;

0 голосов
/ 11 сентября 2018

Есть пара решений.

1.) Просто отключите правило для всего файла, используя eslint-disable в верхней части файла.

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

2.) Вы должны написать код ниже в конце всех строк (28,29), чтобы он был отключен.

/* eslint-disable-line */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...