Ерунда. Из всех адекватных PM которых знаю, ни один ни разу не тимлид и не обладает знаниями джуна ни по одной из технологий в стеке. PM совсем другие навыки важны. Если интересно какие, пройдитесь по паре вакансий и посмотрите. Вы, наверное, с CTO перепутали.
Странная задача. Если не надо прятать user-logout по событию onMouseOut, то зачем его вообще обрабатывать? Ведь this.state.onHoverUser в вашем коде влияет только на состояние user-logout.
Не понятно, что вы именно хотите сделать. Что с результатами? Вы хотите копить массив результатов и передавать его в finish? Или как-то по-другому реализовать?
yanis_kondakov, смотрите в схеме которую вы хотели реализовать, нет гарантии, что у клиента не будет проблем с интернет соединением и запрос на смену статуса точно дойдет, как и нет гарантии, что он просто не закроет вкладку с счетчиками.
Я тут немного пересмотрел задачу и вам нужен только timestampdeadLineDate.
Вы загружаете задачи и если задача закрыта не делаете ничего, если не закрыта смотрите deadlineDate и сравниваете с текущей датой и временем, если deadLineDate уже прошел, тоесть текущий timestamp больше, отмечаете ее как просроченную, если нет включаете на клиенте таймер. Таймер нужен, только чтобы обновить отображение уже загруженных задач. Но можно еще и обратный отсчет показывать если хотите. Тут надо использовать не setInterval, а setTimeout, который еще и очищать придется если задаче сменить статус на завершенную. Для этого исплльзуйте clearTimeout.
yanis_kondakov, по таймстампу и времени на выполнение задачи. Простая арифметика. Получили с бд задачу вычислил просрочена она или нет. Если надо красиво обновлять состояние на клиенте, то для непросроченных запускайте setTimeout, при этом просто локально меняеете состояние без записи в БД.