Ожидаемая ошибка назначения или вызова функции с использованием функции componentdidmount

#reactjs

Вопрос:

Я пытаюсь создать компонент таймера таким образом, чтобы он отмечался только в том случае, если логическая переменная isRunning имеет значение true. Это похоже на учебник react basic: https://reactjs.org/docs/state-and-lifecycle.html

Но по какой-то причине моя функция didmount возвращает ошибку «Ожидал вызова назначения или функции, а вместо этого увидел выражение».

Если бы кто-нибудь мог сказать мне, что я делаю не так, это было бы здорово.

Вот мой код:

 import React , { Component } from 'react';

class Timer extends Component {
    constructor (props) {
        super(props);
        this.state = {
            count : 0
        }
    }


    componentDidMount() {
        {
            {this.props.isRunning ? this.myInterval = setInterval(() => 
                { this.tick()}, 1000) : null}
        }
    }

    tick() {
        this.setState({
            count: this.state.count   1
        })

    }

    
    render () {
        {
            var hour = Math.floor(this.state.count/3600),
            minutes = Math.floor((this.state.count - hour*3600)/60),
            seconds = (this.state.count - hour*3600 -minutes*60 ),
            temp = new Date(); 
            temp.setHours(hour, minutes, seconds);
        }
        
        return(
            <div>
                {temp.getHours()}:{temp.getMinutes()}:{temp.getSeconds()}
            </div>
        );
    }
}

export default Timer;
 

Я на 100% уверен, что проблема возникает из-за моей функции componentDidMount.

Ответ №1:

Вы неправильно используете условный оператор.

Это формат : Условие ? Возвратная истина : возвратный результат

 
componentDidMount() {
        this.myInterval = this.props.isRunning ? setInterval(() => 
                { this.tick()}, 1000) : null
        
    }

 

Комментарии:

1. Спасибо и извините за ошибку нуби 🙂 Я приму ваш ответ, когда начнется обратный отсчет времени.

2. В этом нет необходимости извиняться. Это форум для обмена знаниями. Пожалуйста, используйте зеленую галочку, чтобы принять ответ, если он работает.

3. Я так и сделаю, но по какой-то причине есть обратный отсчет еще на 4 минуты.